def __init__(self, keyword, args): super().__init__(keyword, "") then = args.find("THEN") assert_syntax(then != -1, "No THEN found for IF") then_clause = args[then + len("THEN"):] self._additional = then_clause.strip() lexer = get_lexer() left_over = args[:then] self._tokens = lexer.lex(left_over) super().__init__(keyword, "")
def __init__(self, keyword, args): super().__init__(keyword, "") try: variable, value = args.split("=", 1) except Exception as e: raise BasicSyntaxError(F"Error in expression. No '='.") lexer = get_lexer() self._tokens = lexer.lex(value) self._expression = Expression() self._variable = variable.strip()
def __init__(self, keyword, args): super().__init__(keyword, "") try: variable, value = args.split("=", 1) except Exception as e: raise BasicSyntaxError(F"Error in expression. No '='.") variable = variable.strip() assert_syntax( len(variable) == 6 and variable.startswith("FN") and variable[3] == '(' and variable[5] == ')', "Function definition error") self._function_arg = variable[4] self._variable = variable[:3] lexer = get_lexer() self._tokens = lexer.lex(value) self._value = value.strip()
def eval_expression(symbols, value): lexer = get_lexer() tokens = lexer.lex(value) e = Expression() result = e.eval(tokens, symbols=symbols) return result
def setUp(self): # Just use the lexer for convenience. We culd just create the tokens used for operands manually self._lexer = get_lexer()
def setUp(self): self._lexer = get_lexer()