From 889c20924c712a3fd42c9994f9c7faf05ca42a5a Mon Sep 17 00:00:00 2001 From: JanLJL Date: Thu, 2 May 2019 19:04:01 +0200 Subject: [PATCH] changed comma handling for operands --- osaca/parser/parser_x86att.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/osaca/parser/parser_x86att.py b/osaca/parser/parser_x86att.py index 723c37c..55124d9 100755 --- a/osaca/parser/parser_x86att.py +++ b/osaca/parser/parser_x86att.py @@ -54,14 +54,12 @@ class ParserX86ATT(BaseParser): + pp.Word(pp.alphanums).setResultsName('mask') + pp.Literal('}') ) - + pp.Optional(pp.Suppress(pp.Literal(','))) ).setResultsName(self.REGISTER_ID) # Immediate: pp.Regex('^\$(-?[0-9]+)|(0x[0-9a-fA-F]+),?') symbol_immediate = '$' immediate = pp.Group( pp.Literal(symbol_immediate) + (hex_number | decimal_number) - + pp.Optional(pp.Suppress(pp.Literal(','))) ).setResultsName(self.IMMEDIATE_ID) # Memory: offset(base, index, scale) offset = identifier | hex_number | decimal_number @@ -69,11 +67,12 @@ class ParserX86ATT(BaseParser): memory = pp.Group( pp.Optional(offset.setResultsName('offset')) + pp.Literal('(') - + (register.setResultsName('base') | (pp.Suppress(pp.Literal(',')) + scale)) + + pp.Optional(register.setResultsName('base')) + + pp.Optional(pp.Suppress(pp.Literal(','))) + pp.Optional(register.setResultsName('index')) + + pp.Optional(pp.Suppress(pp.Literal(','))) + pp.Optional(scale.setResultsName('scale')) + pp.Literal(')') - + pp.Optional(pp.Suppress(pp.Literal(','))) ).setResultsName(self.MEMORY_ID) # Combine to instruction form operand1 = pp.Group(register ^ immediate ^ memory ^ identifier).setResultsName('operand1') @@ -82,7 +81,9 @@ class ParserX86ATT(BaseParser): self.instruction_parser = ( mnemonic + pp.Optional(operand1) + + pp.Optional(pp.Suppress(pp.Literal(','))) + pp.Optional(operand2) + + pp.Optional(pp.Suppress(pp.Literal(','))) + pp.Optional(operand3) + pp.Optional(self.comment) )