This commit is contained in:
2024-02-21 16:00:09 +01:00
parent ee2817afbb
commit cee71787f4
11 changed files with 51 additions and 9 deletions

View File

@ -211,6 +211,10 @@ class Statement(BaseBox):
def __repr__(self) -> str:
return f"statement()"
class StatementSkip(Statement):
def __repr__(self) -> str:
return f"skip()"
class StatementSet(Statement):
def __init__(self, expression: Exp, variable: str):
self.expression = expression
@ -316,6 +320,22 @@ class CommandIf(Command):
else:
return vtable, ftable, result
class CommandIfElse(Command):
def __init__(self, statement: Statement, else_statement: Statement, condition):
self.statement = statement
self.else_statement = else_statement
self.condition = condition
def __repr__(self) -> str:
return f"ifelse({self.statement}, {self.condition}, {self.else_statement})"
def eval(self, vtable, ftable):
vtable, ftable, result = self.condition.eval(vtable, ftable)
if result:
return self.statement.eval(vtable, ftable)
else:
return self.else_statement.eval(vtable, ftable)
class CommandBecause(Command):
def __init__(self, statement: Statement, condition):
self.statement = statement