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

diff --git a/ast.py b/ast.py
index 6ec5a52..0616b8a 100644 (file)
--- a/ast.py
+++ b/ast.py
@@ -232,11 +232,7 @@ class AST(element.Element):
         children
       )
       self.unary_operator = unary_operator
-      self.postfix = (
-        element.deserialize_bool(postfix)
-      if isinstance(postfix, str) else
-        postfix
-      )
+      self.postfix = postfix
     def serialize(self, ref_list):
       AST.Expression.serialize(self, ref_list)
       self.set('unary_operator', element.serialize_str(self.unary_operator))
@@ -305,16 +301,8 @@ class AST(element.Element):
         children
       )
       self.binary_operator = binary_operator
-      self.precedence = (
-        element.deserialize_int(precedence)
-      if isinstance(precedence, str) else
-        precedence
-      )
-      self.right_to_left = (
-        element.deserialize_bool(right_to_left)
-      if isinstance(right_to_left, str) else
-        right_to_left
-      )
+      self.precedence = precedence
+      self.right_to_left = right_to_left
     def serialize(self, ref_list):
       AST.Expression.serialize(self, ref_list)
       self.set('binary_operator', element.serialize_str(self.binary_operator))
@@ -461,16 +449,8 @@ class AST(element.Element):
         text,
         children
       )
-      self.signed = (
-        element.deserialize_bool(signed)
-      if isinstance(signed, str) else
-        signed
-      )
-      self.bits = (
-        element.deserialize_int(bits)
-      if isinstance(bits, str) else
-        bits
-      )
+      self.signed = signed
+      self.bits = bits
     def serialize(self, ref_list):
       AST.Type.serialize(self, ref_list)
       self.set('signed', element.serialize_bool(self.signed))
@@ -529,16 +509,8 @@ class AST(element.Element):
         text,
         children
       )
-      self.complex = (
-        element.deserialize_int(complex)
-      if isinstance(complex, str) else
-        complex
-      )
-      self.bits = (
-        element.deserialize_int(bits)
-      if isinstance(bits, str) else
-        bits
-      )
+      self.complex = complex
+      self.bits = bits
     def serialize(self, ref_list):
       AST.Type.serialize(self, ref_list)
       self.set('complex', element.serialize_int(self.complex))
@@ -706,11 +678,7 @@ class AST(element.Element):
         children
       )
       self.element_type = element_type
-      self.element_count = (
-        element.deserialize_int(element_count)
-      if isinstance(element_count, str) else
-        element_count
-      )
+      self.element_count = element_count
     def serialize(self, ref_list):
       AST.Type.serialize(self, ref_list)
       self.set('element_type', element.serialize_ref(self.element_type, ref_list))
@@ -838,11 +806,7 @@ class AST(element.Element):
         children
       )
       self.return_type = return_type
-      self.varargs = (
-        element.deserialize_bool(varargs)
-      if isinstance(varargs, str) else
-        varargs
-      )
+      self.varargs = varargs
     def serialize(self, ref_list):
       AST.Type.serialize(self, ref_list)
       self.set('return_type', element.serialize_ref(self.return_type, ref_list))
@@ -1226,11 +1190,7 @@ class AST(element.Element):
         text,
         children
       )
-      self.varargs = (
-        element.deserialize_bool(varargs)
-      if isinstance(varargs, str) else
-        varargs
-      )
+      self.varargs = varargs
     def serialize(self, ref_list):
       AST.Declarator.serialize(self, ref_list)
       self.set('varargs', element.serialize_bool(self.varargs))
@@ -3683,11 +3643,7 @@ class AST(element.Element):
         text,
         children
       )
-      self.n = (
-        element.deserialize_int(n)
-      if isinstance(n, str) else
-        n
-      )
+      self.n = n
     def serialize(self, ref_list):
       element.Element.serialize(self, ref_list)
       self.set('n', element.serialize_int(self.n))
@@ -4692,11 +4648,7 @@ class AST(element.Element):
         text,
         children
       )
-      self.n = (
-        element.deserialize_int(n)
-      if isinstance(n, str) else
-        n
-      )
+      self.n = n
     def serialize(self, ref_list):
       element.Element.serialize(self, ref_list)
       self.set('n', element.serialize_int(self.n))
@@ -4907,11 +4859,7 @@ class AST(element.Element):
         text,
         children
       )
-      self.n = (
-        element.deserialize_int(n)
-      if isinstance(n, str) else
-        n
-      )
+      self.n = n
     def serialize(self, ref_list):
       element.Element.serialize(self, ref_list)
       self.set('n', element.serialize_int(self.n))
@@ -5010,11 +4958,7 @@ class AST(element.Element):
         text,
         children
       )
-      self.n = (
-        element.deserialize_int(n)
-      if isinstance(n, str) else
-        n
-      )
+      self.n = n
     def serialize(self, ref_list):
       element.Element.serialize(self, ref_list)
       self.set('n', element.serialize_int(self.n))
@@ -5246,7 +5190,6 @@ tag_to_class = {
   'AST_ExpressionIdentifier': AST.ExpressionIdentifier,
   'AST_ExpressionIndex': AST.ExpressionIndex,
   'AST_ExpressionIntLiteral': AST.ExpressionIntLiteral,
-  'AST_Identifier': AST.Identifier,
   'AST_ExpressionLeftShiftAssignment': AST.ExpressionLeftShiftAssignment,
   'AST_ExpressionLessThan': AST.ExpressionLessThan,
   'AST_ExpressionLessThanOrEqual': AST.ExpressionLessThanOrEqual,
@@ -5277,6 +5220,7 @@ tag_to_class = {
   'AST_GenericAssociation': AST.GenericAssociation,
   'AST_GenericAssociationList': AST.GenericAssociationList,
   'AST_GenericSelection': AST.GenericSelection,
+  'AST_Identifier': AST.Identifier,
   'AST_IdentifierEmpty': AST.IdentifierEmpty,
   'AST_IdentifierList': AST.IdentifierList,
   'AST_InitDeclarator': AST.InitDeclarator,
index 5a7ae8b..0e3155f 100755 (executable)
@@ -1,21 +1,5 @@
 #!/usr/bin/env python3
 
-# Copyright (C) 2018 Nick Downing <nick@ndcode.org>
-# SPDX-License-Identifier: GPL-2.0-only
-#
-# This program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 51
-# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
 import re
 import sys
 
@@ -125,7 +109,7 @@ while len(line):
 {16:s}    text,
 {17:s}    children{18:s}
 {19:s}  )
-'''.format(
+{20:s}'''.format(
           indent,
           params,
           indent,
@@ -159,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):