added normal assignment

This commit is contained in:
Andrew Segavac
2021-06-01 23:05:17 -06:00
parent 318745ddf3
commit 2ea1ccb0e9
4 changed files with 43 additions and 4 deletions

View File

@@ -109,7 +109,14 @@ class LetStatement:
expression: Expression
Statement = Union[LetStatement, Expression]
@dataclass
class AssignmentStatement:
variable_name: str
type: TypeUsage
expression: Expression
Statement = Union[LetStatement, AssignmentStatement, Expression]
@dataclass
@@ -177,7 +184,10 @@ boring_grammar = r"""
let_statement : "let" identifier "=" expression ";"
| "let" identifier ":" type_usage "=" expression ";"
assignment_statement : identifier "=" expression ";"
statement : let_statement
| assignment_statement
| return_statement
| expression
@@ -298,6 +308,14 @@ class TreeToBoring(Transformer):
expression=expression,
)
def assignment_statement(self, assignment_statement) -> AssignmentStatement:
(variable_name, expression) = assignment_statement
return AssignmentStatement(
variable_name=variable_name,
type=UnknownTypeUsage(),
expression=expression,
)
def statement(self, statement):
(statement,) = statement
return statement