a_star: don't crash on deserialization errors and limit static types
[nit.git] / contrib / nitcc / src / nitcc.nit
index a499217..3456690 100644 (file)
@@ -46,7 +46,7 @@ var node = p.parse
 
 if not node isa NProd then
        assert node isa NError
-       print "{node.position.to_s} Syntax Error: {node.message}"
+       print "{node.position.as(not null)} Syntax Error: {node.message}"
        exit 1
        abort
 end
@@ -72,8 +72,8 @@ end
 var lr = gram.lr0
 
 var conflitcs = new ArraySet[Production]
-for s in lr.states do for t, a in s.guarded_reduce do if a.length > 1 or s.guarded_shift.has_key(t) then
-       for i in a do conflitcs.add(i.alt.prod)
+for s in lr.states do
+       for i in s.conflicting_items do conflitcs.add(i.alt.prod)
 end
 
 if not conflitcs.is_empty then
@@ -111,14 +111,14 @@ f.close
 
 var nfa = v2.nfa
 print "NFA automaton: {nfa.states.length} states (see {name}.nfa.dot)"
-nfa.to_dot("{name}.nfa.dot")
+nfa.to_dot.write_to_file("{name}.nfa.dot")
 
 var dfa = nfa.to_dfa.to_minimal_dfa
 
 dfa.solve_token_inclusion
 
 print "DFA automaton: {dfa.states.length} states (see {name}.dfa.dot)"
-dfa.to_dot("{name}.dfa.dot")
+dfa.to_dot.write_to_file("{name}.dfa.dot")
 
 if dfa.tags.has_key(dfa.start) then
        print "Error: Empty tokens {dfa.tags[dfa.start].join(" ")}"
@@ -146,7 +146,7 @@ f = new FileWriter.open("{name}_test_parser.nit")
 f.write """# Generated by nitcc for the language {{{name}}}
 
 # Standalone parser tester for the language {{{name}}}
-module {{{name}}}_test_parser
+module {{{name}}}_test_parser is generated
 import nitcc_runtime
 import {{{name}}}_lexer
 import {{{name}}}_parser