import lexer_example
@with_lexer(foo_lexer)
grammar foo_grammar {
    @main_rule main_rule <- list+(def_node)
    def_node <- DefNode(
        "(" identifier "," null(ASTList[DefNode]) ")"
    )
    identifier <- Identifier(@identifier)

}

@abstract class FooNode : Node {
}

class DefNode : FooNode {
    @parse_field name : Identifier
    @parse_field values : ASTList[DefNode]
}

class Identifier : FooNode implements TokenNode {
}
