class Scope(FooNode): name = Field() deps = Field() defs = Field() annotations = Annotations(ple_unit_root=True) @langkit_property() def initial_env(): return Self.name.match( lambda p=T.Prefix: p.prefix.referenced_unit.root.cast_or_raise( T.Scope.list).filter(lambda scope: scope.name.symbols == p. prefix.symbols).at_or_raise(0). children_env, lambda _: Self.children_env, ) env_spec = EnvSpec( set_initial_env(Self.initial_env, unsound=True), add_to_env_kv(key=Self.name.suffix_symbol, val=Self), add_env(), )
class GPRNode(ASTNode): annotations = Annotations(generic_list_type="BaseList")
class FooNode(ASTNode): annotations = Annotations(generic_list_type='FooList')
class Subunit(FooNode): annotations = Annotations(ple_unit_root=True) fields = Field()
class Example(FooNode): annotations = Annotations(ple_unit_root=True)
class SyntheticNode(FooNode): annotations = Annotations(ple_unit_root=True)
class NumLiteral(SingleTokNode): annotations = Annotations(repr_name='Num')
class StringLiteral(SingleTokNode): annotations = Annotations(repr_name='Str')
class Identifier(SingleTokNode): annotations = Annotations(repr_name='Id')
class RebindableEnvCreator(BaseEnvCreator): annotations = Annotations(rebindable=True)