Fix up postprocessing so that 'y_tab.' is inserted but not 'DFA.' or 'LR1DFA.'
authorNick Downing <nick@ndcode.org>
Sun, 13 Jan 2019 11:37:17 +0000 (22:37 +1100)
committerNick Downing <nick@ndcode.org>
Sun, 13 Jan 2019 11:37:17 +0000 (22:37 +1100)
l_to_python.py
scan_to_l.py

index 024f290..1399a68 100755 (executable)
@@ -73,11 +73,11 @@ with open('a.c', 'w') as fout:
       if i.tag == 'AST':
         for j in range(1, len(i) + 1):
           element.set_text(i, j, element.get_text(i, j).rstrip() + '\n')
-      elif i.tag == 'AST_Section1_StartConditions':
-        for j in i:
-          assert j.tag == 'AST_Name'
-          text = element.get_text(j, 0)
-          context.translate_identifier[text] = 'DFA.{0:s}'.format(text)
+      #elif i.tag == 'AST_Section1_StartConditions':
+      #  for j in i:
+      #    assert j.tag == 'AST_Name'
+      #    text = element.get_text(j, 0)
+      #    context.translate_identifier[text] = 'DFA.{0:s}'.format(text)
       elif (
         i.tag == 'AST_Section2_Rule' or
         i.tag == 'AST_Section2_Rule_FLexRule'
index d1f5291..8389968 100755 (executable)
@@ -7,60 +7,60 @@ import xml.etree.ElementTree
 root = xml.etree.ElementTree.parse(sys.stdin).getroot()
 
 def replace_in_action(i):
-  if i.tag == 'PLex_Section2_Rule_Action' and len(i):
-    assert i[0].tag == 'PLex_Text'
+  if i.tag == 'AST_Section2_Rule_Action' and len(i):
+    assert i[0].tag == 'AST_Text'
     text = element.get_text(i[0], 0)
 
     # see tests/parse.y
-    text = text.replace('CHAR', 'y_tab.LR1.CHAR')
-    text = text.replace('NUMBER', 'y_tab.LR1.NUMBER')
-    text = text.replace('SECTEND', 'y_tab.LR1.SECTEND')
-    text = text.replace('SCDECL', 'y_tab.LR1.SCDECL')
-    text = text.replace('Xy_tab.LR1.SCDECL', 'y_tab.LR1.XSCDECL')
-    text = text.replace('NAME', 'y_tab.LR1.NAME')
-    text = text.replace('PREVCCL', 'y_tab.LR1.PREVCCL')
-    text = text.replace('EOF_OP', 'y_tab.LR1.EOF_OP')
-    text = text.replace('TOK_OPTION', 'y_tab.LR1.TOK_OPTION')
-    text = text.replace('TOK_OUTFILE', 'y_tab.LR1.TOK_OUTFILE')
-    text = text.replace('TOK_PREFIX', 'y_tab.LR1.TOK_PREFIX')
-    text = text.replace('TOK_YYCLASS', 'y_tab.LR1.TOK_YYCLASS')
-    text = text.replace('TOK_HEADER_FILE', 'y_tab.LR1.TOK_HEADER_FILE')
-    text = text.replace('TOK_EXTRA_TYPE', 'y_tab.LR1.TOK_EXTRA_TYPE')
-    text = text.replace('TOK_TABLES_FILE', 'y_tab.LR1.TOK_TABLES_FILE')
-
-    text = text.replace('CCE_ALNUM', 'y_tab.LR1.CCE_ALNUM')
-    text = text.replace('CCE_ALPHA', 'y_tab.LR1.CCE_ALPHA')
-    text = text.replace('CCE_BLANK', 'y_tab.LR1.CCE_BLANK')
-    text = text.replace('CCE_CNTRL', 'y_tab.LR1.CCE_CNTRL')
-    text = text.replace('CCE_DIGIT', 'y_tab.LR1.CCE_DIGIT')
-    text = text.replace('CCE_GRAPH', 'y_tab.LR1.CCE_GRAPH')
-    text = text.replace('CCE_LOWER', 'y_tab.LR1.CCE_LOWER')
-    text = text.replace('CCE_PRINT', 'y_tab.LR1.CCE_PRINT')
-    text = text.replace('CCE_PUNCT', 'y_tab.LR1.CCE_PUNCT')
-    text = text.replace('CCE_SPACE', 'y_tab.LR1.CCE_SPACE')
-    text = text.replace('CCE_UPPER', 'y_tab.LR1.CCE_UPPER')
-    text = text.replace('CCE_XDIGIT', 'y_tab.LR1.CCE_XDIGIT')
-
-    text = text.replace('CCE_NEG_ALNUM', 'y_tab.LR1.CCE_NEG_ALNUM')
-    text = text.replace('CCE_NEG_ALPHA', 'y_tab.LR1.CCE_NEG_ALPHA')
-    text = text.replace('CCE_NEG_BLANK', 'y_tab.LR1.CCE_NEG_BLANK')
-    text = text.replace('CCE_NEG_CNTRL', 'y_tab.LR1.CCE_NEG_CNTRL')
-    text = text.replace('CCE_NEG_DIGIT', 'y_tab.LR1.CCE_NEG_DIGIT')
-    text = text.replace('CCE_NEG_GRAPH', 'y_tab.LR1.CCE_NEG_GRAPH')
-    text = text.replace('CCE_NEG_LOWER', 'y_tab.LR1.CCE_NEG_LOWER')
-    text = text.replace('CCE_NEG_PRINT', 'y_tab.LR1.CCE_NEG_PRINT')
-    text = text.replace('CCE_NEG_PUNCT', 'y_tab.LR1.CCE_NEG_PUNCT')
-    text = text.replace('CCE_NEG_SPACE', 'y_tab.LR1.CCE_NEG_SPACE')
-    text = text.replace('CCE_NEG_UPPER', 'y_tab.LR1.CCE_NEG_UPPER')
-    text = text.replace('CCE_NEG_XDIGIT', 'y_tab.LR1.CCE_NEG_XDIGIT')
-
-    text = text.replace('CCL_OP_DIFF', 'y_tab.LR1.CCL_OP_DIFF')
-    text = text.replace('CCL_OP_UNION', 'y_tab.LR1.CCL_OP_UNION')
-
-    text = text.replace('BEGIN_REPEAT_POSIX', 'y_tab.LR1.BEGIN_REPEAT_POSIX')
-    text = text.replace('END_REPEAT_POSIX', 'y_tab.LR1.END_REPEAT_POSIX')
-    text = text.replace('BEGIN_REPEAT_FLEX', 'y_tab.LR1.BEGIN_REPEAT_FLEX')
-    text = text.replace('END_REPEAT_FLEX', 'y_tab.LR1.END_REPEAT_FLEX')
+    text = text.replace('CHAR', 'y_tab.CHAR')
+    text = text.replace('NUMBER', 'y_tab.NUMBER')
+    text = text.replace('SECTEND', 'y_tab.SECTEND')
+    text = text.replace('SCDECL', 'y_tab.SCDECL')
+    text = text.replace('Xy_tab.SCDECL', 'y_tab.XSCDECL')
+    text = text.replace('NAME', 'y_tab.NAME')
+    text = text.replace('PREVCCL', 'y_tab.PREVCCL')
+    text = text.replace('EOF_OP', 'y_tab.EOF_OP')
+    text = text.replace('TOK_OPTION', 'y_tab.TOK_OPTION')
+    text = text.replace('TOK_OUTFILE', 'y_tab.TOK_OUTFILE')
+    text = text.replace('TOK_PREFIX', 'y_tab.TOK_PREFIX')
+    text = text.replace('TOK_YYCLASS', 'y_tab.TOK_YYCLASS')
+    text = text.replace('TOK_HEADER_FILE', 'y_tab.TOK_HEADER_FILE')
+    text = text.replace('TOK_EXTRA_TYPE', 'y_tab.TOK_EXTRA_TYPE')
+    text = text.replace('TOK_TABLES_FILE', 'y_tab.TOK_TABLES_FILE')
+
+    text = text.replace('CCE_ALNUM', 'y_tab.CCE_ALNUM')
+    text = text.replace('CCE_ALPHA', 'y_tab.CCE_ALPHA')
+    text = text.replace('CCE_BLANK', 'y_tab.CCE_BLANK')
+    text = text.replace('CCE_CNTRL', 'y_tab.CCE_CNTRL')
+    text = text.replace('CCE_DIGIT', 'y_tab.CCE_DIGIT')
+    text = text.replace('CCE_GRAPH', 'y_tab.CCE_GRAPH')
+    text = text.replace('CCE_LOWER', 'y_tab.CCE_LOWER')
+    text = text.replace('CCE_PRINT', 'y_tab.CCE_PRINT')
+    text = text.replace('CCE_PUNCT', 'y_tab.CCE_PUNCT')
+    text = text.replace('CCE_SPACE', 'y_tab.CCE_SPACE')
+    text = text.replace('CCE_UPPER', 'y_tab.CCE_UPPER')
+    text = text.replace('CCE_XDIGIT', 'y_tab.CCE_XDIGIT')
+
+    text = text.replace('CCE_NEG_ALNUM', 'y_tab.CCE_NEG_ALNUM')
+    text = text.replace('CCE_NEG_ALPHA', 'y_tab.CCE_NEG_ALPHA')
+    text = text.replace('CCE_NEG_BLANK', 'y_tab.CCE_NEG_BLANK')
+    text = text.replace('CCE_NEG_CNTRL', 'y_tab.CCE_NEG_CNTRL')
+    text = text.replace('CCE_NEG_DIGIT', 'y_tab.CCE_NEG_DIGIT')
+    text = text.replace('CCE_NEG_GRAPH', 'y_tab.CCE_NEG_GRAPH')
+    text = text.replace('CCE_NEG_LOWER', 'y_tab.CCE_NEG_LOWER')
+    text = text.replace('CCE_NEG_PRINT', 'y_tab.CCE_NEG_PRINT')
+    text = text.replace('CCE_NEG_PUNCT', 'y_tab.CCE_NEG_PUNCT')
+    text = text.replace('CCE_NEG_SPACE', 'y_tab.CCE_NEG_SPACE')
+    text = text.replace('CCE_NEG_UPPER', 'y_tab.CCE_NEG_UPPER')
+    text = text.replace('CCE_NEG_XDIGIT', 'y_tab.CCE_NEG_XDIGIT')
+
+    text = text.replace('CCL_OP_DIFF', 'y_tab.CCL_OP_DIFF')
+    text = text.replace('CCL_OP_UNION', 'y_tab.CCL_OP_UNION')
+
+    text = text.replace('BEGIN_REPEAT_POSIX', 'y_tab.BEGIN_REPEAT_POSIX')
+    text = text.replace('END_REPEAT_POSIX', 'y_tab.END_REPEAT_POSIX')
+    text = text.replace('BEGIN_REPEAT_FLEX', 'y_tab.BEGIN_REPEAT_FLEX')
+    text = text.replace('END_REPEAT_FLEX', 'y_tab.END_REPEAT_FLEX')
 
     element.set_text(i[0], 0, text)
   else: