@@ -109,16 +109,15 @@ def scan(i, to_scan):
109109 token_node = TokenNode (token , terminals [token .type ])
110110 new_item .node = node_cache [label ] if label in node_cache else node_cache .setdefault (label , self .SymbolNode (* label ))
111111 new_item .node .add_family (new_item .s , item .rule , new_item .start , item .node , token_node )
112- elif item . is_complete and item . s == start_symbol :
113- # Handle completed start symbols
112+ else :
113+ # Handle items carried over due to ignores
114114 new_item = Item (item .rule , item .ptr , item .start )
115115 label = (new_item .s , new_item .start , i + 1 )
116116 new_item .node = node_cache [label ] if label in node_cache else node_cache .setdefault (label , self .SymbolNode (* label ))
117- # new_item.node and item.node both represent the start symbol, so merge their children
118- for child in item .node .children :
119- new_item .node .add_family (new_item .s , child .rule , new_item .start , child .left , child .right )
120- else :
121- new_item = item
117+ if item .node :
118+ # new_item.node and item.node both represent the same symbol, so merge their children
119+ for child in item .node .children :
120+ new_item .node .add_family (new_item .s , child .rule , new_item .start , child .left , child .right )
122121
123122 if new_item .expect in self .TERMINALS :
124123 # add (B ::= Aai+1.B, h, y) to Q'
0 commit comments