this.tokenSource.nextToken is not a function

80 views
Skip to first unread message

lan...@clarkson.edu

unread,
Jul 14, 2017, 11:19:37 PM7/14/17
to antlr-discussion
Hello,

I am using Antlr 4.7 to generate a JavaScript lexer/parser. I am getting the this.tokenSource.nextToken is not a function error for even the simplest grammar, taken from the Antlr homepage:

Grammar
grammar JASS;
prog:    (expr NEWLINE)* ;
expr:    expr ('*'|'/') expr
    |    expr ('+'|'-') expr
    |    INT
    |    '(' expr ')'
    ;
NEWLINE : [\r\n]+ ;
INT     : [0-9]+ ;

Code
var input = '100+2*34';
var chars = new antlr4.InputStream(input);
var lexer = JASSLexer.JASSLexer(chars);
var tokens  = new antlr4.CommonTokenStream(lexer);
var parser = new JASSParser.JASSParser(tokens);
parser.buildParseTrees = true;
var tree = parser.prog();

Error trace

TypeError: this.tokenSource.nextToken is not a function
    at CommonTokenStream.BufferedTokenStream.fetch (C:\Users\Greg\Desktop\JASS\node_modules\antlr4\BufferedTokenStream.js:140:28)
    at CommonTokenStream.BufferedTokenStream.sync (C:\Users\Greg\Desktop\JASS\node_modules\antlr4\BufferedTokenStream.js:125:22)
    at CommonTokenStream.BufferedTokenStream.setup (C:\Users\Greg\Desktop\JASS\node_modules\antlr4\BufferedTokenStream.js:228:7)
    at CommonTokenStream.BufferedTokenStream.lazyInit (C:\Users\Greg\Desktop\JASS\node_modules\antlr4\BufferedTokenStream.js:223:8)
    at CommonTokenStream.LT (C:\Users\Greg\Desktop\JASS\node_modules\antlr4\CommonTokenStream.js:68:10)
    at JASSParser.Parser.enterRule (C:\Users\Greg\Desktop\JASS\node_modules\antlr4\Parser.js:416:32)
    at JASSParser.prog (C:\Users\Greg\Desktop\JASS\syntax\JASSParser.js:147:10)
    at Object.<anonymous> (C:\Users\Greg\Desktop\JASS\index.js:16:19)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)

Any ideas? I've tried following each error up the call stack, but am not familiar enough with the code to know the issue here. Thanks in advance.

Eric Vergnaud

unread,
Jul 19, 2017, 10:29:19 AM7/19/17
to antlr-discussion
You're missing the 'new' in var lexer = JASSLexer.JASSLexer(chars);
Reply all
Reply to author
Forward
0 new messages