Update skel_py_element.py and tests_ast directory to pilex.git commit dd0c364
authorNick Downing <downing.nick@gmail.com>
Wed, 26 Sep 2018 07:38:38 +0000 (17:38 +1000)
committerNick Downing <downing.nick@gmail.com>
Wed, 26 Sep 2018 07:38:53 +0000 (17:38 +1000)
skel/skel_py_element.py
tests_ast/cal_py.l
tests_ast/cal_py.y

index 0950581..382df56 100644 (file)
@@ -1,6 +1,7 @@
 import bisect
 import element
-import xml.etree.ElementTree
+import lex_yy
+#import xml.etree.ElementTree
 
 # GENERATE SECTION1
 
@@ -16,14 +17,11 @@ yylval = None
 yylloc = None
 
 yy_element_stack = None
-yy_element_space = None
-yy_element_token = None
 
 # GENERATE SECTION2
 
 def yyparse(factory, *args, **kwargs):
-  global yystack, yytoken, yyval, yyloc, yylval, yylloc
-  global yy_element_stack, yy_element_space, yy_element_token
+  global yystack, yytoken, yyval, yyloc, yylval, yylloc, yy_element_stack
 
   # GENERATE INITIALACTION
 
@@ -40,8 +38,12 @@ def yyparse(factory, *args, **kwargs):
       if yytoken == -1:
         yylval = None
         yylloc = None
-        yytoken = yylex()
+        yytoken = lex_yy.yylex()
         #print('yytoken', yytoken, 'yylval', yylval, 'yylloc', yylloc)
+        #print('lex_yy.yy_element_space')
+        #xml.etree.ElementTree.dump(lex_yy.yy_element_space)
+        #print('lex_yy.yy_element_token')
+        #xml.etree.ElementTree.dump(lex_yy.yy_element_token)
       action = yy_lr1dfa_states[state][1][
         bisect.bisect_right(yy_lr1dfa_states[state][0], yytoken)
       ]
@@ -52,8 +54,9 @@ def yyparse(factory, *args, **kwargs):
 
         # push space then AST element contiguously onto yy_element_stack
         # even numbered elements are spaces, odd numbered elements are AST
-        yy_element_stack.append(yy_element_space)
-        yy_element_stack.append(yy_element_token)
+        yy_element_stack.extend(
+          [lex_yy.yy_element_space, lex_yy.yy_element_token]
+        )
 
         state = action >> 1
         #print('shift', state)
@@ -76,8 +79,9 @@ def yyparse(factory, *args, **kwargs):
     i = base * 2
     #print('i', i, 'len(yy_element_stack)', len(yy_element_stack))
     if i >= len(yy_element_stack):
-      yy_element_stack.append(element.Element('root'))
-      yy_element_stack.append(element.Element('root'))
+      yy_element_stack.extend(
+        [element.Element('root'), element.Element('root')]
+      )
     else:
       #print('yy_element_stack[i]')
       #xml.etree.ElementTree.dump(yy_element_stack[i])
index 5e6acea..d94aef0 100644 (file)
@@ -10,10 +10,11 @@ DIGIT [0-9]+\.?|[0-9]*\.[0-9]+
 
 [ ]
 {DIGIT}        {
-  y_tab.yy_element_token = element.Element(
+  global yy_element_token
+  yy_element_token = element.Element(
     'root',
     children = [
-      element.concatenate([y_tab.yy_element_token], ast.AST.Num)
+      element.concatenate([yy_element_token], ast.AST.Num)
     ]
   )
   y_tab.yylval = float(yytext)
index d17f562..d62d9ef 100644 (file)
@@ -1,7 +1,5 @@
 %{
 import ast
-from lex_yy import yylex
-import xml.etree.ElementTree
 import sys
 %}
 %token NUM