コード例 #1
0
def parse(s):
    code = pp.Forward()
    opcode = pp.Or([
        pp.Literal('+'),
        pp.Literal('-'),
        pp.Literal('*'),
        pp.Literal('/'),
        pp.Literal('_'),
        pp.Literal('='),
        pp.Literal('>'),
        pp.Literal('&'),
        pp.Literal('|'),
        pp.Literal('~'),
        pp.Literal('$'),
        pp.Literal('%'),
        pp.Literal('\\'),
        pp.Literal('@'),
        pp.Literal('ø'),
        pp.Literal('p'),
        pp.Literal(':'),
        pp.Literal(';'),
        pp.Literal('!'),
        pp.Literal('?'),
        pp.Literal('#'),
    ]).setParseAction(lambda toks: ast.Opcode(toks[0]))
    number = (pp.Word('1234567890').setParseAction(
        lambda toks: ast.Number(int(toks[0]))))
    str_def = ((pp.Literal('"') + pp.SkipTo(pp.Literal('"'), include=True)
                ).setParseAction(lambda toks: ast.String(toks[1])))
    varname = (pp.Word(
        'qwertyuiopasdfghjklzxcvbnm',
        exact=1).setParseAction(lambda toks: ast.Varname(toks[0])))
    fn_def = pp.Suppress(pp.Literal('[')) + code + pp.Suppress(pp.Literal(']'))
    expr = pp.Or([opcode, number, varname, str_def, fn_def])
    atom = pp.Or([expr])
    code << pp.ZeroOrMore(atom)
    code.setParseAction(lambda toks: ast.Function(toks))
    return code.parseString(s)[0]
コード例 #2
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_negs_6():
    eval_lambda("Expr2", "-(1 + 1)", lambda x: x.eval() == ast.Number(-2))
コード例 #3
0
def factor_negative_num(p):
    return ast.Number(-int(p[1].getstr()))
コード例 #4
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_parens_binop_3():
    eval_lambda("Expr2", "1 + 2", lambda x: x.eval() == ast.Number(3))
コード例 #5
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_parens_binop_1():
    eval_lambda("Expr2", "(1 + (2 + 3))", lambda x: x.eval() == ast.Number(6))
コード例 #6
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_negative_term_0():
    eval_lambda("Expr2", "-1", lambda x: x.eval() == ast.Number(-1))
コード例 #7
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_term_negative_term():
    eval_lambda("Term", "-1", lambda x: x.eval() == ast.Number(-1))
コード例 #8
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_term_decimal():
    eval_lambda("Term", "1", lambda x: x.eval() == ast.Number(1))
コード例 #9
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_negs_17():
    eval_lambda("Expr2", "---(((1+2)+3+3)-(4+6))",
                lambda x: x.eval() == ast.Number(1))
コード例 #10
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_negs_16():
    eval_lambda("Expr2", "----2 + ----2", lambda x: x.eval() == ast.Number(4))
コード例 #11
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_negs_15():
    eval_lambda("Expr2", "--(2+2)", lambda x: x.eval() == ast.Number(4))
コード例 #12
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_negs_11():
    eval_lambda("Expr2", "-(-(1) - -1)", lambda x: x.eval() == ast.Number(0))
コード例 #13
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_negs_10():
    eval_lambda("Expr2", "(-1) + -(1)", lambda x: x.eval() == ast.Number(-2))
コード例 #14
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_negs_9():
    eval_lambda("Expr2", "-1 - -1", lambda x: x.eval() == ast.Number(0))
コード例 #15
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_negs_7():
    eval_lambda("Expr2", "-(-2) - 3", lambda x: x.eval() == ast.Number(-1))
コード例 #16
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_eval_lit_num_bin():
    eval_lambda("LitNum", "0b101010", lambda x: x.eval() == ast.Number(42))
コード例 #17
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_term_hex():
    eval_lambda("Term", "0x10", lambda x: x.eval() == ast.Number(0x10))
コード例 #18
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_negs_18():
    eval_lambda("Expr2", "1--2", lambda x: x.eval() == ast.Number(3))
コード例 #19
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_term_binary_lit_1():
    eval_lambda("Term", "-0b101", lambda x: x.eval() == ast.Number(-0b101))
コード例 #20
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_negs_19():
    eval_lambda("Expr2", "1+-2", lambda x: x.eval() == ast.Number(-1))
コード例 #21
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_term_neg_neg_term():
    eval_lambda("Term", "--1", lambda x: x.eval() == ast.Number(1))
コード例 #22
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def do_test_expr2_with_args(s, n):
    eval_lambda("Expr2", s, lambda x: x.eval() == ast.Number(n))
コード例 #23
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_negative_term_paren_2():
    eval_lambda("Expr2", "((((((((-1))))))))",
                lambda x: x.eval() == ast.Number(-1))
コード例 #24
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_eval_lit_num_dec():
    eval_lambda("LitNum", "42", lambda x: x.eval() == ast.Number(42))
コード例 #25
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_expr2_parens_binop_2():
    eval_lambda("Expr2", "((1 + 1) + (1 + 1))",
                lambda x: x.eval() == ast.Number(4))
コード例 #26
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def eval_expr2(s):
    eval_lambda("Expr2", s, lambda x: x.eval() == ast.Number(eval(s)))
コード例 #27
0
def factor_num(p):
    return ast.Number(int(p[0].getstr()))
コード例 #28
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def eval_expr2_expect(s, e):
    eval_lambda("Expr2", s, lambda x: x.eval() == ast.Number(e))
コード例 #29
0
ファイル: parser.py プロジェクト: javidhsueh/Flask-GAE
 def p_numeric_literal(self, p):
     """numeric_literal : NUMBER"""
     p[0] = ast.Number(p[1])
コード例 #30
0
ファイル: test_eval.py プロジェクト: drhodes/uasm_assembler
def test_eval_lit_num_hex():
    eval_lambda("LitNum", "0x2a", lambda x: x.eval() == ast.Number(42))