✨
This commit is contained in:
@ -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()
|
||||
|
@ -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"\["),
|
||||
|
@ -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:]))
|
||||
|
Reference in New Issue
Block a user