This commit is contained in:
2024-02-21 15:08:01 +01:00
parent b6949f6a73
commit b388a6a95c
11 changed files with 31 additions and 8 deletions

View File

@ -50,7 +50,7 @@ class ExpVariable(Exp):
self.variable_name = variable_id
def __repr__(self) -> str:
return f"exp_variable({self.variable_name})"
return f"variable({self.variable_name})"
def eval(self, vtable, ftable):
return vtable, ftable, vtable[self.variable_name]
@ -369,7 +369,7 @@ class Program(BaseBox):
def __init__(self, statements: list[Statement]) -> None:
self.statements = statements
random.seed(str(self))
r = random.randint(1,20)
r = random.randint(1,10)
if r == 1:
print("E004: Random compiler error")
exit()

View File

@ -32,7 +32,10 @@ DATA_TOKENS = [
]
SYMBOL_TOKENS = [
("SYMBOL_OR", r"\\\/"),
("SYMBOL_AND", r"\/\\"),
("SYMBOL_SET", r"\-\>"),
("SYMBOL_TILDE", r"\~"),
# ("SYMBOL_LPARENS", r"\("),
# ("SYMBOL_RPARENS", r"\)"),
("SYMBOL_LBRACKET", r"\["),

View File

@ -11,9 +11,9 @@ class Parser():
('left', ["KEYWORD_MAYBE", "KEYWORD_RETURN"]),
('left', ["KEYWORD_IF", "KEYWORD_BECAUSE", "KEYWORD_UNTIL", "KEYWORD_DEFINE", "KEYWORD_AS"]),
('left', ["KEYWORD_DO", "BUILTIN", "SYMBOL_SET"]),
('left', ["SYMBOL_EQUALS"]),
('left', ["SYMBOL_PLUS", "SYMBOL_MINUS"]),
('left', ["SYMBOL_TIMES", "SYMBOL_DIVIDE", "SYMBOL_LT","SYMBOL_GT"])
('left', ["SYMBOL_EQUALS", "SYMBOL_LT","SYMBOL_GT"]),
('left', ["SYMBOL_PLUS", "SYMBOL_MINUS", "SYMBOL_OR", "SYMBOL_AND"]),
('left', ["SYMBOL_TIMES", "SYMBOL_DIVIDE", "SYMBOL_TILDE"])
]
)
@ -118,6 +118,15 @@ class Parser():
def exp_a_binop(tokens):
return ast_nodes.ExpABinop(tokens[1].value,tokens[0],tokens[2])
@self.pg.production('expression : expression SYMBOL_OR expression')
@self.pg.production('expression : expression SYMBOL_AND expression')
def exp_b_binop(tokens):
pass
@self.pg.production('expression : SYMBOL_TILDE expression')
def exp_not(tokens):
pass
@self.pg.production('expression : KEYWORD_ARGUMENT ARG')
def exp_arg(tokens):
return ast_nodes.ExpArg(int(tokens[1].value[1:]))