X-Git-Url: http://nitlanguage.org diff --git a/src/parser/parser_work.nit b/src/parser/parser_work.nit index 2a83ee0..c2eff11 100644 --- a/src/parser/parser_work.nit +++ b/src/parser/parser_work.nit @@ -24,12 +24,6 @@ private class State # The node stored with the state in the stack var nodes: nullable Object - - init(state: Int, nodes: nullable Object) - do - _state = state - _nodes = nodes - end end # The parser of the Nit language. @@ -39,17 +33,13 @@ class Parser var lexer: Lexer # Stack of pushed states and productions - private var stack: Array[State] + private var stack = new Array[State] # Position in the stack - private var stack_pos: Int + private var stack_pos: Int = -1 - # Create a new parser based on a given lexer - init(lexer: Lexer) + init do - _lexer = lexer - _stack = new Array[State] - _stack_pos = -1 build_reduce_table end @@ -156,14 +146,14 @@ class Parser else if action_type == 3 then # ERROR # skip injected tokens while not isset token._location do token = lexer.next - var node2 = new AParserError.init_parser_error("Syntax error: unexpected {token}.", token.location, token) + var node2 = new AParserError.init_parser_error("Syntax Error: unexpected {token}.", token.location, token) var node = new Start(null, node2) return node end end end - private var reduce_table: Array[ReduceAction] + private var reduce_table: Array[ReduceAction] is noinit private fun build_reduce_table is abstract end @@ -230,7 +220,11 @@ private class ComputeProdLocationVisitor var endl = _last_location assert endl != null - n.location = new Location(startl.file, startl.line_start, endl.line_end, startl.column_start, endl.column_end) + if startl == endl then + n.location = startl + else + n.location = new Location(startl.file, startl.line_start, endl.line_end, startl.column_start, endl.column_end) + end if not _need_after_epsilons.is_empty then var loc = new Location(endl.file, endl.line_end, endl.line_end, endl.column_end, endl.column_end) @@ -246,8 +240,6 @@ private class ComputeProdLocationVisitor end end end - - init do end end private class TextCollectorVisitor @@ -271,5 +263,4 @@ private abstract class ReduceAction return l1 end var goto: Int - init(g: Int) do _goto = g end