RA22-015: First pass of env_specs on lkt syntax

This commit is contained in:
Raphaël AMIARD
2020-02-07 15:31:21 +01:00
parent 829c18d70c
commit cdce4d82be

View File

@@ -3,6 +3,8 @@ from __future__ import absolute_import, division, print_function
from langkit.dsl import (
ASTNode, AbstractField, Field, T, abstract
)
from langkit.envs import EnvSpec, add_env, add_to_env_kv
from langkit.expressions import Entity, Self
from langkit.parsers import Grammar, List, NoBacktrack as cut, Opt, Or
from language.lexer import lkt_lexer as Lex
@@ -41,6 +43,10 @@ class Decl(LKNode):
"""
name = AbstractField(type=T.DefId)
env_spec = EnvSpec(
add_to_env_kv(Entity.name.symbol, Self),
)
@abstract
class Expr(LKNode):
@@ -65,6 +71,11 @@ class GrammarDecl(BaseGrammarDecl):
name = Field()
rules = Field()
env_spec = EnvSpec(
add_to_env_kv(Entity.name.symbol, Self),
add_env()
)
class GrammarRuleDecl(Decl):
"""
@@ -251,6 +262,11 @@ class ClassDecl(Decl):
base_class = Field()
decls = Field()
env_spec = EnvSpec(
add_to_env_kv(Entity.name.symbol, Self),
add_env()
)
class DocComment(LKNode):
"""
@@ -275,6 +291,11 @@ class FunDecl(Decl):
return_type = Field()
body = Field()
env_spec = EnvSpec(
add_to_env_kv(Entity.name.symbol, Self),
add_env()
)
@abstract
class BaseValDecl(Decl):
@@ -462,6 +483,8 @@ class BlockExpr(Expr):
val_defs = Field()
expr = Field()
env_spec = EnvSpec(add_env())
class MatchExpr(Expr):
"""
@@ -478,6 +501,10 @@ class MatchBranch(LKNode):
decl = Field()
expr = Field()
env_spec = EnvSpec(
add_env()
)
class MatchValDecl(BaseValDecl):
"""