import lexer_example
@with_lexer(foo_lexer)
grammar foo_grammar {
    @main_rule main_rule <- or(Plus(atom "+" main_rule) | atom)
    atom <- Literal(@number)

}

@abstract class FooNode : Node {

    @export fun root_node (): FooNode = node.unit().root.as_bare_entity
}

@abstract class Expression : FooNode {
}

class Literal : Expression implements TokenNode {
}

class Plus : Expression {
    @parse_field left : Literal
    @parse_field right : Expression
}
