def _expr_q(tokens): if len(tokens) == 0: return [] out = _do_symbol_equal(tokens, ["+", _expr_term, _expr_q]) if out: return Capture("expr", out, tokens[0].line) out = _do_symbol_equal(tokens, ["-", _expr_term, _expr_q]) if out: return Capture("expr", out, tokens[0].line) return True
def _expr_primary(tokens): if len(tokens) == 0: return [] out = _do_symbol_equal(tokens, ["LITERAL"]) if out: return Capture("expr", out, tokens[0].line) out = _do_symbol_equal(tokens, ["SYMBOL"]) if out: return Capture("expr", out, tokens[0].line) out = _do_symbol_equal(tokens, ["(", _expr, ")"]) if out: return Capture("expr", out, tokens[0].line)
def _condition(tokens): if len(tokens) == 0: return [] # If ---------------------------------------- out = _do_symbol_equal(tokens, ["if", _expr, "then", "\n", _start, "end", "if"]) if out: return Capture("condition", out, tokens[0].line) out = _do_symbol_equal( tokens, ["if", _expr, "then", "\n", _start, _else_condition]) if out: return Capture("condition", out, tokens[0].line)
def _loop(tokens): if len(tokens) == 0: return [] out = _do_symbol_equal(tokens, [ "loop", "SYMBOL", "from", _expr, "to", _expr, "\n", _start, "end", "loop" ]) if out: return Capture("loop", out, tokens[0].line) out = _do_symbol_equal( tokens, ["loop", "while", _expr, "\n", _start, "end", "loop"]) if out: return Capture("loop", out, tokens[0].line)
def _keyword(tokens): if len(tokens) == 0: return [] # Output ---------------------------------------- out = _do_symbol_equal(tokens, ["output", _expr]) if out: return Capture("keyword", out, tokens[0].line) # Input ---------------------------------------- out = _do_symbol_equal(tokens, ["input", "SYMBOL"]) if out: return Capture("keyword", out, tokens[0].line) # Debugger ----------------------------------------- out = _do_symbol_equal(tokens, ["debugger"]) if out: return Capture("keyword", out, tokens[0].line)
def _expr(tokens): if len(tokens) == 0: return [] # Maths ----------------------------------- out = _do_symbol_equal(tokens, [_expr_term, _expr_q]) if out: return Capture("expr", out, tokens[0].line)
def _start(tokens): if len(tokens) == 0: return [] # Assignment -------------------------------------- out = _do_symbol_equal(tokens, ["SYMBOL", "=", _expr, "\n", _start]) if out: return Capture("start", out, tokens[0].line) out = _do_symbol_equal(tokens, ["SYMBOL", "=", _expr, "\n"]) if out: return Capture("start", out, tokens[0].line) # Expression -------------------------------------- out = _do_symbol_equal(tokens, [_expr, "\n", _start]) if out: return Capture("start", out, tokens[0].line) out = _do_symbol_equal(tokens, [_expr, "\n"]) if out: return Capture("start", out, tokens[0].line) # Loops ------------------------------------------ out = _do_symbol_equal(tokens, [_loop, "\n", _start]) if out: return Capture("start", out, tokens[0].line) out = _do_symbol_equal(tokens, [_loop, "\n"]) if out: return Capture("start", out, tokens[0].line) # Keywords --------------------------------------- out = _do_symbol_equal(tokens, [_keyword, "\n", _start]) if out: return Capture("start", out, tokens[0].line) out = _do_symbol_equal(tokens, [_keyword, "\n"]) if out: return Capture("start", out, tokens[0].line) # Conditions ------------------------------------- out = _do_symbol_equal(tokens, [_condition, "\n", _start]) if out: return Capture("start", out, tokens[0].line) out = _do_symbol_equal(tokens, [_condition, "\n"]) if out: return Capture("start", out, tokens[0].line)
def _expr_logic_q(tokens): if len(tokens) == 0: return [] # Logic ---------------------------------------- out = _do_symbol_equal(tokens, ["=", _expr_primary, _expr_logic_q]) if out: return Capture("expr", out, tokens[0].line) out = _do_symbol_equal(tokens, ["<=", _expr_primary, _expr_logic_q]) if out: return Capture("expr", out, tokens[0].line) out = _do_symbol_equal(tokens, [">=", _expr_primary, _expr_logic_q]) if out: return Capture("expr", out, tokens[0].line) out = _do_symbol_equal(tokens, ["<", _expr_primary, _expr_logic_q]) if out: return Capture("expr", out, tokens[0].line) out = _do_symbol_equal(tokens, [">", _expr_primary, _expr_logic_q]) if out: return Capture("expr", out, tokens[0].line) out = _do_symbol_equal(tokens, ["!=", _expr_primary, _expr_logic_q]) if out: return Capture("expr", out, tokens[0].line) return True
def _expr_logic(tokens): if len(tokens) == 0: return [] out = _do_symbol_equal(tokens, [_expr_primary, _expr_logic_q]) if out: return Capture("expr", out, tokens[0].line)