Remove obsolete way of initializing AST elements with serialized (string) data
authorNick Downing <nick@ndcode.org>
Sat, 26 Jan 2019 23:28:15 +0000 (10:28 +1100)
committerNick Downing <nick@ndcode.org>
Sat, 26 Jan 2019 23:28:15 +0000 (10:28 +1100)
ast.py
generate_ast.py

diff --git a/ast.py b/ast.py
index 6043e17..379c0d5 100644 (file)
--- a/ast.py
+++ b/ast.py
@@ -66,18 +66,10 @@ class AST(element.Element):
         children
       )
       self.name = name
-      self.exclusive = (
-        element.deserialize_bool(exclusive)
-      if isinstance(exclusive, str) else
-        exclusive
-      )
+      self.exclusive = exclusive
       self.rules = rules
       self.bol_rules = bol_rules
-      self.eof_action = (
-        element.deserialize_int(eof_action)
-      if isinstance(eof_action, str) else
-        eof_action
-      )
+      self.eof_action = eof_action
     def serialize(self, ref_list):
       element.Element.serialize(self, ref_list)
       self.set('name', element.serialize_str(self.name))
@@ -394,11 +386,7 @@ class AST(element.Element):
             text,
             children
           )
-          self.value = (
-            element.deserialize_bool(value)
-          if isinstance(value, str) else
-            value
-          )
+          self.value = value
         def serialize(self, ref_list):
           AST.Section1.Options.Option.serialize(self, ref_list)
           self.set('value', element.serialize_bool(self.value))
@@ -2657,11 +2645,7 @@ class AST(element.Element):
           text,
           children
         )
-        self.exclusive = (
-          element.deserialize_bool(exclusive)
-        if isinstance(exclusive, str) else
-          exclusive
-        )
+        self.exclusive = exclusive
       def serialize(self, ref_list):
         Item.serialize(self, ref_list)
         self.set('exclusive', element.serialize_bool(self.exclusive))
@@ -2799,322 +2783,74 @@ class AST(element.Element):
         children,
         code_blocks_text
       )
-      self.align = (
-        element.deserialize_bool(align)
-      if isinstance(align, str) else
-        align
-      )
-      self.always_interactive = (
-        element.deserialize_bool(always_interactive)
-      if isinstance(always_interactive, str) else
-        always_interactive
-      )
-      self.array = (
-        element.deserialize_bool(array)
-      if isinstance(array, str) else
-        array
-      )
-      self.backup = (
-        element.deserialize_bool(backup)
-      if isinstance(backup, str) else
-        backup
-      )
-      self.bison_bridge = (
-        element.deserialize_bool(bison_bridge)
-      if isinstance(bison_bridge, str) else
-        bison_bridge
-      )
-      self.bison_locations = (
-        element.deserialize_bool(bison_locations)
-      if isinstance(bison_locations, str) else
-        bison_locations
-      )
-      self.caseless = (
-        element.deserialize_bool(caseless)
-      if isinstance(caseless, str) else
-        caseless
-      )
-      self.c_plus_plus = (
-        element.deserialize_bool(c_plus_plus)
-      if isinstance(c_plus_plus, str) else
-        c_plus_plus
-      )
-      self.debug = (
-        element.deserialize_bool(debug)
-      if isinstance(debug, str) else
-        debug
-      )
-      self.default = (
-        element.deserialize_bool(default)
-      if isinstance(default, str) else
-        default
-      )
-      self.ecs = (
-        element.deserialize_bool(ecs)
-      if isinstance(ecs, str) else
-        ecs
-      )
+      self.align = align
+      self.always_interactive = always_interactive
+      self.array = array
+      self.backup = backup
+      self.bison_bridge = bison_bridge
+      self.bison_locations = bison_locations
+      self.caseless = caseless
+      self.c_plus_plus = c_plus_plus
+      self.debug = debug
+      self.default = default
+      self.ecs = ecs
       self.extra_type = extra_type
-      self.fast = (
-        element.deserialize_bool(fast)
-      if isinstance(fast, str) else
-        fast
-      )
-      self.full = (
-        element.deserialize_bool(full)
-      if isinstance(full, str) else
-        full
-      )
+      self.fast = fast
+      self.full = full
       self.header_file = header_file
-      self.input = (
-        element.deserialize_bool(input)
-      if isinstance(input, str) else
-        input
-      )
-      self.interactive = (
-        element.deserialize_bool(interactive)
-      if isinstance(interactive, str) else
-        interactive
-      )
-      self.lex_compat = (
-        element.deserialize_bool(lex_compat)
-      if isinstance(lex_compat, str) else
-        lex_compat
-      )
-      self.line = (
-        element.deserialize_bool(line)
-      if isinstance(line, str) else
-        line
-      )
-      self.main = (
-        element.deserialize_bool(main)
-      if isinstance(main, str) else
-        main
-      )
-      self.meta_ecs = (
-        element.deserialize_bool(meta_ecs)
-      if isinstance(meta_ecs, str) else
-        meta_ecs
-      )
-      self.never_interactive = (
-        element.deserialize_bool(never_interactive)
-      if isinstance(never_interactive, str) else
-        never_interactive
-      )
+      self.input = input
+      self.interactive = interactive
+      self.lex_compat = lex_compat
+      self.line = line
+      self.main = main
+      self.meta_ecs = meta_ecs
+      self.never_interactive = never_interactive
       self.outfile = outfile
-      self.perf_report = (
-        element.deserialize_bool(perf_report)
-      if isinstance(perf_report, str) else
-        perf_report
-      )
-      self.posix_compat = (
-        element.deserialize_bool(posix_compat)
-      if isinstance(posix_compat, str) else
-        posix_compat
-      )
+      self.perf_report = perf_report
+      self.posix_compat = posix_compat
       self.prefix = prefix
-      self.read = (
-        element.deserialize_bool(read)
-      if isinstance(read, str) else
-        read
-      )
-      self.reentrant = (
-        element.deserialize_bool(reentrant)
-      if isinstance(reentrant, str) else
-        reentrant
-      )
-      self.reject = (
-        element.deserialize_bool(reject)
-      if isinstance(reject, str) else
-        reject
-      )
-      self.seven_bit = (
-        element.deserialize_bool(seven_bit)
-      if isinstance(seven_bit, str) else
-        seven_bit
-      )
-      self.stack = (
-        element.deserialize_bool(stack)
-      if isinstance(stack, str) else
-        stack
-      )
-      self.stdinit = (
-        element.deserialize_bool(stdinit)
-      if isinstance(stdinit, str) else
-        stdinit
-      )
-      self.stdout = (
-        element.deserialize_bool(stdout)
-      if isinstance(stdout, str) else
-        stdout
-      )
+      self.read = read
+      self.reentrant = reentrant
+      self.reject = reject
+      self.seven_bit = seven_bit
+      self.stack = stack
+      self.stdinit = stdinit
+      self.stdout = stdout
       self.tables_file = tables_file
-      self.tables_verify = (
-        element.deserialize_bool(tables_verify)
-      if isinstance(tables_verify, str) else
-        tables_verify
-      )
-      self.unistd = (
-        element.deserialize_bool(unistd)
-      if isinstance(unistd, str) else
-        unistd
-      )
-      self.unput = (
-        element.deserialize_bool(unput)
-      if isinstance(unput, str) else
-        unput
-      )
-      self.verbose = (
-        element.deserialize_bool(verbose)
-      if isinstance(verbose, str) else
-        verbose
-      )
-      self.warn = (
-        element.deserialize_bool(warn)
-      if isinstance(warn, str) else
-        warn
-      )
-      self.yyalloc = (
-        element.deserialize_bool(yyalloc)
-      if isinstance(yyalloc, str) else
-        yyalloc
-      )
+      self.tables_verify = tables_verify
+      self.unistd = unistd
+      self.unput = unput
+      self.verbose = verbose
+      self.warn = warn
+      self.yyalloc = yyalloc
       self.yyclass = yyclass
-      self.yyfree = (
-        element.deserialize_bool(yyfree)
-      if isinstance(yyfree, str) else
-        yyfree
-      )
-      self.yyget_debug = (
-        element.deserialize_bool(yyget_debug)
-      if isinstance(yyget_debug, str) else
-        yyget_debug
-      )
-      self.yyget_extra = (
-        element.deserialize_bool(yyget_extra)
-      if isinstance(yyget_extra, str) else
-        yyget_extra
-      )
-      self.yyget_in = (
-        element.deserialize_bool(yyget_in)
-      if isinstance(yyget_in, str) else
-        yyget_in
-      )
-      self.yyget_leng = (
-        element.deserialize_bool(yyget_leng)
-      if isinstance(yyget_leng, str) else
-        yyget_leng
-      )
-      self.yyget_lineno = (
-        element.deserialize_bool(yyget_lineno)
-      if isinstance(yyget_lineno, str) else
-        yyget_lineno
-      )
-      self.yyget_lloc = (
-        element.deserialize_bool(yyget_lloc)
-      if isinstance(yyget_lloc, str) else
-        yyget_lloc
-      )
-      self.yyget_lval = (
-        element.deserialize_bool(yyget_lval)
-      if isinstance(yyget_lval, str) else
-        yyget_lval
-      )
-      self.yyget_out = (
-        element.deserialize_bool(yyget_out)
-      if isinstance(yyget_out, str) else
-        yyget_out
-      )
-      self.yyget_text = (
-        element.deserialize_bool(yyget_text)
-      if isinstance(yyget_text, str) else
-        yyget_text
-      )
-      self.yylineno = (
-        element.deserialize_bool(yylineno)
-      if isinstance(yylineno, str) else
-        yylineno
-      )
-      self.yymore = (
-        element.deserialize_bool(yymore)
-      if isinstance(yymore, str) else
-        yymore
-      )
-      self.yy_pop_state = (
-        element.deserialize_bool(yy_pop_state)
-      if isinstance(yy_pop_state, str) else
-        yy_pop_state
-      )
-      self.yy_push_state = (
-        element.deserialize_bool(yy_push_state)
-      if isinstance(yy_push_state, str) else
-        yy_push_state
-      )
-      self.yyrealloc = (
-        element.deserialize_bool(yyrealloc)
-      if isinstance(yyrealloc, str) else
-        yyrealloc
-      )
-      self.yy_scan_buffer = (
-        element.deserialize_bool(yy_scan_buffer)
-      if isinstance(yy_scan_buffer, str) else
-        yy_scan_buffer
-      )
-      self.yy_scan_bytes = (
-        element.deserialize_bool(yy_scan_bytes)
-      if isinstance(yy_scan_bytes, str) else
-        yy_scan_bytes
-      )
-      self.yy_scan_string = (
-        element.deserialize_bool(yy_scan_string)
-      if isinstance(yy_scan_string, str) else
-        yy_scan_string
-      )
-      self.yyset_debug = (
-        element.deserialize_bool(yyset_debug)
-      if isinstance(yyset_debug, str) else
-        yyset_debug
-      )
-      self.yyset_extra = (
-        element.deserialize_bool(yyset_extra)
-      if isinstance(yyset_extra, str) else
-        yyset_extra
-      )
-      self.yyset_in = (
-        element.deserialize_bool(yyset_in)
-      if isinstance(yyset_in, str) else
-        yyset_in
-      )
-      self.yyset_lineno = (
-        element.deserialize_bool(yyset_lineno)
-      if isinstance(yyset_lineno, str) else
-        yyset_lineno
-      )
-      self.yyset_lloc = (
-        element.deserialize_bool(yyset_lloc)
-      if isinstance(yyset_lloc, str) else
-        yyset_lloc
-      )
-      self.yyset_lval = (
-        element.deserialize_bool(yyset_lval)
-      if isinstance(yyset_lval, str) else
-        yyset_lval
-      )
-      self.yyset_out = (
-        element.deserialize_bool(yyset_out)
-      if isinstance(yyset_out, str) else
-        yyset_out
-      )
-      self.yy_top_state = (
-        element.deserialize_bool(yy_top_state)
-      if isinstance(yy_top_state, str) else
-        yy_top_state
-      )
-      self.yywrap = (
-        element.deserialize_bool(yywrap)
-      if isinstance(yywrap, str) else
-        yywrap
-      )
+      self.yyfree = yyfree
+      self.yyget_debug = yyget_debug
+      self.yyget_extra = yyget_extra
+      self.yyget_in = yyget_in
+      self.yyget_leng = yyget_leng
+      self.yyget_lineno = yyget_lineno
+      self.yyget_lloc = yyget_lloc
+      self.yyget_lval = yyget_lval
+      self.yyget_out = yyget_out
+      self.yyget_text = yyget_text
+      self.yylineno = yylineno
+      self.yymore = yymore
+      self.yy_pop_state = yy_pop_state
+      self.yy_push_state = yy_push_state
+      self.yyrealloc = yyrealloc
+      self.yy_scan_buffer = yy_scan_buffer
+      self.yy_scan_bytes = yy_scan_bytes
+      self.yy_scan_string = yy_scan_string
+      self.yyset_debug = yyset_debug
+      self.yyset_extra = yyset_extra
+      self.yyset_in = yyset_in
+      self.yyset_lineno = yyset_lineno
+      self.yyset_lloc = yyset_lloc
+      self.yyset_lval = yyset_lval
+      self.yyset_out = yyset_out
+      self.yy_top_state = yy_top_state
+      self.yywrap = yywrap
     def serialize(self, ref_list):
       AST.Section1Or2.serialize(self, ref_list)
       self.set('align', element.serialize_bool(self.align))
@@ -3904,11 +3640,7 @@ class AST(element.Element):
             text,
             children
           )
-          self.continued = (
-            element.deserialize_bool(continued)
-          if isinstance(continued, str) else
-            continued
-          )
+          self.continued = continued
         def serialize(self, ref_list):
           element.Element.serialize(self, ref_list)
           self.set('continued', element.serialize_bool(self.continued))
@@ -4011,23 +3743,11 @@ class AST(element.Element):
             text,
             children
           )
-          self.bol = (
-            element.deserialize_bool(bol)
-          if isinstance(bol, str) else
-            bol
-          )
-          self.group_index = (
-            element.deserialize_int(group_index)
-          if isinstance(group_index, str) else
-            group_index
-          )
+          self.bol = bol
+          self.group_index = group_index
           self.groups0 = groups0
           self.groups1 = groups1
-          self.action = (
-            element.deserialize_int(action)
-          if isinstance(action, str) else
-            action
-          )
+          self.action = action
         def serialize(self, ref_list):
           element.Element.serialize(self, ref_list)
           self.set('bol', element.serialize_bool(self.bol))
@@ -4228,11 +3948,7 @@ class AST(element.Element):
           text,
           children
         )
-        self.wildcard = (
-          element.deserialize_bool(wildcard)
-        if isinstance(wildcard, str) else
-          wildcard
-        )
+        self.wildcard = wildcard
       def serialize(self, ref_list):
         element.Element.serialize(self, ref_list)
         self.set('wildcard', element.serialize_bool(self.wildcard))
@@ -4339,17 +4055,9 @@ class AST(element.Element):
     self.start_conditions = start_conditions
     self.actions_text = actions_text
     self.eof_actions_text = eof_actions_text
-    self.default_action = (
-      element.deserialize_int(default_action)
-    if isinstance(default_action, str) else
-      default_action
-    )
+    self.default_action = default_action
     self.flex_rules = flex_rules
-    self.n_groups = (
-      element.deserialize_int(n_groups)
-    if isinstance(n_groups, str) else
-      n_groups
-    )
+    self.n_groups = n_groups
   def serialize(self, ref_list):
     element.Element.serialize(self, ref_list)
     self.set(
index f9a633b..0e3155f 100755 (executable)
@@ -109,7 +109,7 @@ while len(line):
 {16:s}    text,
 {17:s}    children{18:s}
 {19:s}  )
-'''.format(
+{20:s}'''.format(
           indent,
           params,
           indent,
@@ -143,80 +143,22 @@ while len(line):
                 indent,
                 name
               )
-              for type, name in base_classes[-2][class_name][:i]
+              for _, name in base_classes[-2][class_name][:i]
             ]
           ),
-          indent
+          indent,
+          ''.join(
+            [
+              '{0:s}  self.{1:s} = {2:s}\n'.format(
+                indent,
+                name,
+                name
+              )
+              for _, name in fields
+            ]
+          )
         )
       )
-      for type, name in fields:
-        if type == 'ref' or type == 'list(ref)' or type == 'set(ref)' or type == 'str':
-          sys.stdout.write(
-            '''{0:s}  self.{1:s} = {2:s}
-'''.format(indent, name, name)
-          )
-        elif type[:5] == 'list(' and type[-1:] == ')':
-          subtype = type[5:-1]
-          sys.stdout.write(
-            '''{0:s}  self.{1:s} = (
-{2:s}    [element.deserialize_{3:s}(i) for i in {4:s}.split()]
-{5:s}  if isinstance({6:s}, str) else
-{7:s}    {8:s}
-{9:s}  )
-'''.format(
-              indent,
-              name,
-              indent,
-              subtype,
-              name,
-              indent,
-              name,
-              indent,
-              name,
-              indent
-            )
-          )
-        elif type[:4] == 'set(' and type[-1:] == ')':
-          subtype = type[4:-1]
-          sys.stdout.write(
-            '''{0:s}  self.{1:s} = (
-{2:s}    set([element.deserialize_{3:s}(i) for i in {4:s}.split()])
-{5:s}  if isinstance({6:s}, str) else
-{7:s}    {8:s}
-{9:s}  )
-'''.format(
-              indent,
-              name,
-              indent,
-              subtype,
-              name,
-              indent,
-              name,
-              indent,
-              name,
-              indent
-            )
-          )
-        else:
-          sys.stdout.write(
-            '''{0:s}  self.{1:s} = (
-{2:s}    element.deserialize_{3:s}({4:s})
-{5:s}  if isinstance({6:s}, str) else
-{7:s}    {8:s}
-{9:s}  )
-'''.format(
-              indent,
-              name,
-              indent,
-              type,
-              name,
-              indent,
-              name,
-              indent,
-              name,
-              indent
-            )
-          )
       if len(fields):
         sys.stdout.write(
           '''{0:s}def serialize(self, ref_list):