character_to_symbol,
name_to_symbol
)
- if self.precedence_terminal == -1:
- self.precedence_terminal = self.last_terminal
character_set = pyacc.nonterminals[
self.lhs_nonterminal
)
)
precedence = (
- -1
- if self.precedence_terminal == -1 else
pyacc.terminals[self.precedence_terminal].precedence
+ if self.precedence_terminal != -1 else
+ pyacc.terminals[self.last_terminal].precedence
+ if self.last_terminal != -1 else
+ -1
)
if len(_lr1.precedences[3]) and _lr1.precedences[3][-1] == precedence:
_lr1.precedences[2][-1] = len(_lr1.productions)
character_to_symbol,
name_to_symbol
)
- if self.start_nonterminal == -1:
- self.start_nonterminal = self.first_nonterminal
# fill in token numbers that are not characters or overridden by user
token = 0x100
[
(
[],
- self.nonterminals[self.start_nonterminal].character_set
+ self.nonterminals[
+ self.start_nonterminal
+ if self.start_nonterminal != -1 else
+ self.first_nonterminal
+ ].character_set
)
],
# lookaheads (list of initial_set, can_be_empty)
with open(in_file) as fin:
pyacc = element.deserialize(fin, ast.factory)
+#element.serialize(pyacc, sys.stdout)
pyacc.post_process()
+#element.serialize(pyacc, sys.stdout)
bison_lr1dfa.generate(pyacc, skel_file, out_file)
def deserialize_str(text):
return text
-def serialize(root, fout, encoding = 'utf-8'):
+def serialize(root, fout, encoding = 'unicode'):
ref_list = Element('RefList')
root.serialize(ref_list, 2)
ref = len(ref_list)
i.ref = -1
del i.attrib['ref']
-def deserialize(fin, factory = Element, encoding = 'utf-8'):
+def deserialize(fin, factory = Element, encoding = 'unicode'):
ref_list = xml.etree.ElementTree.parse(
fin,
xml.etree.ElementTree.XMLParser(