From 04360cc897c5060897af84b13a303adfcf9049b2 Mon Sep 17 00:00:00 2001 From: Julian Hammer Date: Mon, 12 Oct 2020 15:39:32 +0200 Subject: [PATCH] fixed label identifiers by splitting --- osaca/parser/parser_x86att.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/osaca/parser/parser_x86att.py b/osaca/parser/parser_x86att.py index 7807b25..ecdee66 100755 --- a/osaca/parser/parser_x86att.py +++ b/osaca/parser/parser_x86att.py @@ -26,19 +26,25 @@ class ParserX86ATT(BaseParser): relocation = pp.Combine(pp.Literal('@') + pp.Word(pp.alphas)) id_offset = pp.Word(pp.nums) + pp.Suppress(pp.Literal('+')) first = pp.Word(pp.alphas + '_.', exact=1) - rest = pp.Word(pp.alphanums + '$_.+-()') + rest = pp.Word(pp.alphanums + '$_.+-') identifier = pp.Group( pp.Optional(id_offset).setResultsName('offset') + pp.Combine(first + pp.Optional(rest)).setResultsName('name') + pp.Optional(relocation).setResultsName('relocation') ).setResultsName('identifier') # Label + rest = pp.Word(pp.alphanums + '$_.+-()') + label_identifier = pp.Group( + pp.Optional(id_offset).setResultsName('offset') + + pp.Combine(first + pp.Optional(rest)).setResultsName('name') + + pp.Optional(relocation).setResultsName('relocation') + ).setResultsName('identifier') numeric_identifier = pp.Group( pp.Word(pp.nums).setResultsName('name') + pp.Optional(pp.oneOf('b f', caseless=True).setResultsName('suffix')) ).setResultsName('identifier') self.label = pp.Group( - (identifier | numeric_identifier).setResultsName('name') + (label_identifier | numeric_identifier).setResultsName('name') + pp.Literal(':') + pp.Optional(self.comment) ).setResultsName(self.LABEL_ID)