From 127c78826962d114fa533285b518d3516efbbfe3 Mon Sep 17 00:00:00 2001 From: Nick Downing Date: Sun, 27 Jan 2019 10:29:54 +1100 Subject: [PATCH] Remove obsolete way of initializing AST elements with serialized (string) data --- ast.py | 86 ++++++++--------------------------------- generate_ast.py | 100 +++++++----------------------------------------- 2 files changed, 28 insertions(+), 158 deletions(-) diff --git a/ast.py b/ast.py index 6ec5a52..0616b8a 100644 --- 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, diff --git a/generate_ast.py b/generate_ast.py index 5a7ae8b..0e3155f 100755 --- a/generate_ast.py +++ b/generate_ast.py @@ -1,21 +1,5 @@ #!/usr/bin/env python3 -# Copyright (C) 2018 Nick Downing -# 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): -- 2.34.1