about summary refs log tree commit diff stats
path: root/miasm/expression/parser.py
diff options
context:
space:
mode:
authorTheofilos Augoustis <theofilos.augoustis@gmail.com>2025-10-14 09:09:29 +0000
committerTheofilos Augoustis <theofilos.augoustis@gmail.com>2025-10-14 09:09:29 +0000
commit579cf1d03fb932083e6317967d1613d5c2587fb6 (patch)
tree629f039935382a2a7391bce9253f6c9968159049 /miasm/expression/parser.py
parent51c15d3ea2e16d4fc5f0f01a3b9befc66b1f982e (diff)
downloadfocaccia-miasm-579cf1d03fb932083e6317967d1613d5c2587fb6.tar.gz
focaccia-miasm-579cf1d03fb932083e6317967d1613d5c2587fb6.zip
Convert to src-layout ta/nix
Diffstat (limited to 'miasm/expression/parser.py')
-rw-r--r--miasm/expression/parser.py84
1 files changed, 0 insertions, 84 deletions
diff --git a/miasm/expression/parser.py b/miasm/expression/parser.py
deleted file mode 100644
index 66b6fc6d..00000000
--- a/miasm/expression/parser.py
+++ /dev/null
@@ -1,84 +0,0 @@
-import pyparsing
-from miasm.expression.expression import ExprInt, ExprId, ExprLoc, ExprSlice, \
-    ExprMem, ExprCond, ExprCompose, ExprOp, ExprAssign, LocKey
-
-integer = pyparsing.Word(pyparsing.nums).setParseAction(lambda t:
-                                                        int(t[0]))
-hex_word = pyparsing.Literal('0x') + pyparsing.Word(pyparsing.hexnums)
-hex_int = pyparsing.Combine(hex_word).setParseAction(lambda t:
-                                                     int(t[0], 16))
-
-str_int_pos = (hex_int | integer)
-str_int_neg = (pyparsing.Suppress('-') + \
-                   (hex_int | integer)).setParseAction(lambda t: -t[0])
-
-str_int = str_int_pos | str_int_neg
-
-STR_EXPRINT = pyparsing.Suppress("ExprInt")
-STR_EXPRID = pyparsing.Suppress("ExprId")
-STR_EXPRLOC = pyparsing.Suppress("ExprLoc")
-STR_EXPRSLICE = pyparsing.Suppress("ExprSlice")
-STR_EXPRMEM = pyparsing.Suppress("ExprMem")
-STR_EXPRCOND = pyparsing.Suppress("ExprCond")
-STR_EXPRCOMPOSE = pyparsing.Suppress("ExprCompose")
-STR_EXPROP = pyparsing.Suppress("ExprOp")
-STR_EXPRASSIGN = pyparsing.Suppress("ExprAssign")
-
-LOCKEY = pyparsing.Suppress("LocKey")
-
-STR_COMMA = pyparsing.Suppress(",")
-LPARENTHESIS = pyparsing.Suppress("(")
-RPARENTHESIS = pyparsing.Suppress(")")
-
-
-T_INF = pyparsing.Suppress("<")
-T_SUP = pyparsing.Suppress(">")
-
-
-string_quote = pyparsing.QuotedString(quoteChar="'", escChar='\\', escQuote='\\')
-string_dquote = pyparsing.QuotedString(quoteChar='"', escChar='\\', escQuote='\\')
-
-
-string = string_quote | string_dquote
-
-expr = pyparsing.Forward()
-
-expr_int = STR_EXPRINT + LPARENTHESIS + str_int + STR_COMMA + str_int + RPARENTHESIS
-expr_id = STR_EXPRID + LPARENTHESIS + string + STR_COMMA + str_int + RPARENTHESIS
-expr_loc = STR_EXPRLOC + LPARENTHESIS + T_INF + LOCKEY + str_int + T_SUP + STR_COMMA + str_int + RPARENTHESIS
-expr_slice = STR_EXPRSLICE + LPARENTHESIS + expr + STR_COMMA + str_int + STR_COMMA + str_int + RPARENTHESIS
-expr_mem = STR_EXPRMEM + LPARENTHESIS + expr + STR_COMMA + str_int + RPARENTHESIS
-expr_cond = STR_EXPRCOND + LPARENTHESIS + expr + STR_COMMA + expr + STR_COMMA + expr + RPARENTHESIS
-expr_compose = STR_EXPRCOMPOSE + LPARENTHESIS + pyparsing.delimitedList(expr, delim=',') + RPARENTHESIS
-expr_op = STR_EXPROP + LPARENTHESIS + string + STR_COMMA + pyparsing.delimitedList(expr, delim=',') + RPARENTHESIS
-expr_aff = STR_EXPRASSIGN + LPARENTHESIS + expr + STR_COMMA + expr + RPARENTHESIS
-
-expr << (expr_int | expr_id | expr_loc | expr_slice | expr_mem | expr_cond | \
-         expr_compose | expr_op | expr_aff)
-
-def parse_loc_key(t):
-    assert len(t) == 2
-    loc_key, size = LocKey(t[0]), t[1]
-    return ExprLoc(loc_key, size)
-
-expr_int.setParseAction(lambda t: ExprInt(*t))
-expr_id.setParseAction(lambda t: ExprId(*t))
-expr_loc.setParseAction(parse_loc_key)
-expr_slice.setParseAction(lambda t: ExprSlice(*t))
-expr_mem.setParseAction(lambda t: ExprMem(*t))
-expr_cond.setParseAction(lambda t: ExprCond(*t))
-expr_compose.setParseAction(lambda t: ExprCompose(*t))
-expr_op.setParseAction(lambda t: ExprOp(*t))
-expr_aff.setParseAction(lambda t: ExprAssign(*t))
-
-
-def str_to_expr(str_in):
-    """Parse the @str_in and return the corresponding Expression
-    @str_in: repr string of an Expression"""
-
-    try:
-        value = expr.parseString(str_in)
-    except:
-        raise RuntimeError("Cannot parse expression %s" % str_in)
-    assert len(value) == 1
-    return value[0]