import lexer_example
@with_lexer(foo_lexer)
grammar foo_grammar {
    @main_rule main_rule <- elem
    elem <- or(scope | id)
    scope <- Scope(id "{" list+(elem) "}")
    id <- Id(@identifier)

}

@abstract class FooNode : Node {
}

class Id : FooNode implements TokenNode {

    @export fun get_scope (): FooNode = node.children_env().get_first("Scope")
}

class Scope : FooNode {
    @parse_field name : Id
    @parse_field content : ASTList[FooNode]
}
