last_action
)
)
+ assert isinstance(self[0], PYACC.Text) # temporary
for i in self[0]:
if isinstance(i, PYACC.Text.StackLocation):
i.offset = -len(symbols)
name = self[0].get_text()
if len(name) == 0: # do the same as Section1.Prologue
(
- pyacc.before_union_code
- if len(pyacc.union_code) == 0 else
- pyacc.after_union_code
- ).append(self[1])
+ pyacc.before_union_text
+ if len(pyacc.union_text) == 0 else
+ pyacc.after_union_text
+ ).append(self[1][0])
elif name == 'top':
- pyacc.top_code.append(self[1])
+ pyacc.top_text.append(self[1][0])
elif name == 'requires':
- pyacc.requires_code.append(self[1])
+ pyacc.requires_text.append(self[1][0])
else:
assert False
if len(name):
assert len(pyacc.union_name) == 0
pyacc.union_name = name
- pyacc.union_code.append(self[1])
+ pyacc.union_text.append(self[1][0])
# GENERATE ELEMENT() BEGIN
def __init__(
value = (
''
if len(self) < 2 else
- self[1][0].get_text()
- if isinstance(self[1], PYACC.String) else
- self[1].get_text()[1:-1] # fix this later
- if isinstance(self[1], PYACC.BracedCode) else
- self[1].get_text() # ID
+ (
+ self[1]
+ if isinstance(self[1], PYACC.ID) else
+ self[1][0] # String or BracedCode
+ ).get_text()
)
if name == 'api.prefix':
section.type_prefix = value.upper()
string_to_symbol,
name_to_tag
):
- pyacc.initial_action_code.append(self[0])
+ assert isinstance(self[0], PYACC.Text) # temporary
+ pyacc.initial_action_text.append(self[0])
class Language(Item):
# GENERATE ELEMENT() BEGIN
name_to_tag
):
(
- pyacc.before_union_code
- if len(pyacc.union_code) == 0 else
- pyacc.after_union_code
+ pyacc.before_union_text
+ if len(pyacc.union_text) == 0 else
+ pyacc.after_union_text
).append(self[0])
class PureParser(Item):
[element.get_text(self, len(self))]
)
- class BracedCode(Text):
+ class BracedCode(element.Element):
# GENERATE ELEMENT() BEGIN
def __init__(
self,
text = '',
children = []
):
- PYACC.Text.__init__(
+ element.Element.__init__(
self,
tag,
attrib,
children
)
def copy(self, factory = None):
- result = PYACC.Text.copy(
+ result = element.Element.copy(
self,
BracedCode if factory is None else factory
)
):
pass
- # GENERATE ELEMENT(list(ref) top_code, list(ref) before_union_code, list(ref) requires_code, str union_name, list(ref) union_code, list(ref) after_union_code, list(ref) initial_action_code, list(ref) tags, list(ref) symbols, int n_productions, list(ref) productions, int first_nonterminal, int start_nonterminal, list(int) associativities) BEGIN
+ # GENERATE ELEMENT(list(ref) top_text, list(ref) before_union_text, list(ref) requires_text, str union_name, list(ref) union_text, list(ref) after_union_text, list(ref) initial_action_text, list(ref) tags, list(ref) symbols, int n_productions, list(ref) productions, int first_nonterminal, int start_nonterminal, list(int) associativities) BEGIN
def __init__(
self,
tag = 'PYACC',
attrib = {},
text = '',
children = [],
- top_code = [],
- before_union_code = [],
- requires_code = [],
+ top_text = [],
+ before_union_text = [],
+ requires_text = [],
union_name = '',
- union_code = [],
- after_union_code = [],
- initial_action_code = [],
+ union_text = [],
+ after_union_text = [],
+ initial_action_text = [],
tags = [],
symbols = [],
n_productions = -1,
text,
children
)
- self.top_code = top_code
- self.before_union_code = before_union_code
- self.requires_code = requires_code
+ self.top_text = top_text
+ self.before_union_text = before_union_text
+ self.requires_text = requires_text
self.union_name = union_name
- self.union_code = union_code
- self.after_union_code = after_union_code
- self.initial_action_code = initial_action_code
+ self.union_text = union_text
+ self.after_union_text = after_union_text
+ self.initial_action_text = initial_action_text
self.tags = tags
self.symbols = symbols
self.n_productions = (
def serialize(self, ref_list):
element.Element.serialize(self, ref_list)
self.set(
- 'top_code',
- ' '.join([element.serialize_ref(i, ref_list) for i in self.top_code])
+ 'top_text',
+ ' '.join([element.serialize_ref(i, ref_list) for i in self.top_text])
)
self.set(
- 'before_union_code',
- ' '.join([element.serialize_ref(i, ref_list) for i in self.before_union_code])
+ 'before_union_text',
+ ' '.join([element.serialize_ref(i, ref_list) for i in self.before_union_text])
)
self.set(
- 'requires_code',
- ' '.join([element.serialize_ref(i, ref_list) for i in self.requires_code])
+ 'requires_text',
+ ' '.join([element.serialize_ref(i, ref_list) for i in self.requires_text])
)
self.set('union_name', element.serialize_str(self.union_name))
self.set(
- 'union_code',
- ' '.join([element.serialize_ref(i, ref_list) for i in self.union_code])
+ 'union_text',
+ ' '.join([element.serialize_ref(i, ref_list) for i in self.union_text])
)
self.set(
- 'after_union_code',
- ' '.join([element.serialize_ref(i, ref_list) for i in self.after_union_code])
+ 'after_union_text',
+ ' '.join([element.serialize_ref(i, ref_list) for i in self.after_union_text])
)
self.set(
- 'initial_action_code',
- ' '.join([element.serialize_ref(i, ref_list) for i in self.initial_action_code])
+ 'initial_action_text',
+ ' '.join([element.serialize_ref(i, ref_list) for i in self.initial_action_text])
)
self.set(
'tags',
)
def deserialize(self, ref_list):
element.Element.deserialize(self, ref_list)
- self.top_code = [
+ self.top_text = [
element.deserialize_ref(i, ref_list)
- for i in self.get('top_code', '').split()
+ for i in self.get('top_text', '').split()
]
- self.before_union_code = [
+ self.before_union_text = [
element.deserialize_ref(i, ref_list)
- for i in self.get('before_union_code', '').split()
+ for i in self.get('before_union_text', '').split()
]
- self.requires_code = [
+ self.requires_text = [
element.deserialize_ref(i, ref_list)
- for i in self.get('requires_code', '').split()
+ for i in self.get('requires_text', '').split()
]
self.union_name = element.deserialize_str(self.get('union_name', ''))
- self.union_code = [
+ self.union_text = [
element.deserialize_ref(i, ref_list)
- for i in self.get('union_code', '').split()
+ for i in self.get('union_text', '').split()
]
- self.after_union_code = [
+ self.after_union_text = [
element.deserialize_ref(i, ref_list)
- for i in self.get('after_union_code', '').split()
+ for i in self.get('after_union_text', '').split()
]
- self.initial_action_code = [
+ self.initial_action_text = [
element.deserialize_ref(i, ref_list)
- for i in self.get('initial_action_code', '').split()
+ for i in self.get('initial_action_text', '').split()
]
self.tags = [
element.deserialize_ref(i, ref_list)
self,
PYACC if factory is None else factory
)
- result.top_code = self.top_code
- result.before_union_code = self.before_union_code
- result.requires_code = self.requires_code
+ result.top_text = self.top_text
+ result.before_union_text = self.before_union_text
+ result.requires_text = self.requires_text
result.union_name = self.union_name
- result.union_code = self.union_code
- result.after_union_code = self.after_union_code
- result.initial_action_code = self.initial_action_code
+ result.union_text = self.union_text
+ result.after_union_text = self.after_union_text
+ result.initial_action_text = self.initial_action_text
result.tags = self.tags
result.symbols = self.symbols
result.n_productions = self.n_productions
return result
def repr_serialize(self, params):
element.Element.repr_serialize(self, params)
- if len(self.top_code):
+ if len(self.top_text):
params.append(
- 'top_code = [{0:s}]'.format(
- ', '.join([repr(i) for i in self.top_code])
+ 'top_text = [{0:s}]'.format(
+ ', '.join([repr(i) for i in self.top_text])
)
)
- if len(self.before_union_code):
+ if len(self.before_union_text):
params.append(
- 'before_union_code = [{0:s}]'.format(
- ', '.join([repr(i) for i in self.before_union_code])
+ 'before_union_text = [{0:s}]'.format(
+ ', '.join([repr(i) for i in self.before_union_text])
)
)
- if len(self.requires_code):
+ if len(self.requires_text):
params.append(
- 'requires_code = [{0:s}]'.format(
- ', '.join([repr(i) for i in self.requires_code])
+ 'requires_text = [{0:s}]'.format(
+ ', '.join([repr(i) for i in self.requires_text])
)
)
if self.union_name != '':
params.append(
'union_name = {0:s}'.format(repr(self.union_name))
)
- if len(self.union_code):
+ if len(self.union_text):
params.append(
- 'union_code = [{0:s}]'.format(
- ', '.join([repr(i) for i in self.union_code])
+ 'union_text = [{0:s}]'.format(
+ ', '.join([repr(i) for i in self.union_text])
)
)
- if len(self.after_union_code):
+ if len(self.after_union_text):
params.append(
- 'after_union_code = [{0:s}]'.format(
- ', '.join([repr(i) for i in self.after_union_code])
+ 'after_union_text = [{0:s}]'.format(
+ ', '.join([repr(i) for i in self.after_union_text])
)
)
- if len(self.initial_action_code):
+ if len(self.initial_action_text):
params.append(
- 'initial_action_code = [{0:s}]'.format(
- ', '.join([repr(i) for i in self.initial_action_code])
+ 'initial_action_text = [{0:s}]'.format(
+ ', '.join([repr(i) for i in self.initial_action_text])
)
)
if len(self.tags):
def post_process(self):
# variables that will be serialized
- self.top_code = []
- self.before_union_code = []
- self.requires_code = []
+ self.top_text = []
+ self.before_union_text = []
+ self.requires_text = []
self.union_name = ''
- self.union_code = []
- self.after_union_code = []
- self.initial_action_code = []
+ self.union_text = []
+ self.after_union_text = []
+ self.initial_action_text = []
self.precedences = 0
self.symbols = [
PYACC.Symbol(
# lookaheads (list of initial_set, can_be_empty)
[([], False), ([], True)],
# ref_data
- PYACC.BracedCode()
+ PYACC.Text() # temporary
)
],
# precedences