1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver/** A parser for TokenStreams. "parser grammars" result in a subclass 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver * of this. 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver */ 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverorg.antlr.runtime.Parser = function(input, state) { 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver org.antlr.runtime.Parser.superclass.constructor.call(this, state); 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver this.setTokenStream(input); 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}; 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverorg.antlr.lang.extend(org.antlr.runtime.Parser, org.antlr.runtime.BaseRecognizer, { 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver reset: function() { 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // reset all recognizer state variables 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver org.antlr.runtime.Parser.superclass.reset.call(this); 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if ( org.antlr.lang.isValue(this.input) ) { 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver this.input.seek(0); // rewind the input 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver }, 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver getCurrentInputSymbol: function(input) { 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return input.LT(1); 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver }, 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver getMissingSymbol: function(input, 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver e, 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver expectedTokenType, 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver follow) 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver var tokenText = 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver "<missing "+this.getTokenNames()[expectedTokenType]+">"; 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver var t = new org.antlr.runtime.CommonToken(expectedTokenType, tokenText); 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver var current = input.LT(1); 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver var old_current; 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if ( current.getType() === org.antlr.runtime.Token.EOF ) { 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver old_current = current; 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver current = input.LT(-1); 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // handle edge case where there are no good tokens in the stream 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if (!current) { 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver current = old_current; 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.line = current.getLine(); 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.charPositionInLine = current.getCharPositionInLine(); 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t.channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL; 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return t; 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver }, 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver /** Set the token stream and reset the parser */ 48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver setTokenStream: function(input) { 49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver this.input = null; 50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver this.reset(); 51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver this.input = input; 52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver }, 53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver getTokenStream: function() { 55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return this.input; 56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver }, 57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver getSourceName: function() { 59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return this.input.getSourceName(); 60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver }, 61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver traceIn: function(ruleName, ruleIndex) { 63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver org.antlr.runtime.Parser.superclass.traceIn.call( 64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver this, ruleName, ruleIndex, this.input.LT(1)); 65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver }, 66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver traceOut: function(ruleName, ruleIndex) { 68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver org.antlr.runtime.Parser.superclass.traceOut.call( 69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver this, ruleName, ruleIndex, this.input.LT(1)); 70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}); 72