2
我正在嘗試使用Jison來編寫解析器,該解析器將解析javap
工具的輸出。這是我的.jison文件的內容:Jison解析器中的SyntaxError
%lex
%x classfile
%%
"Classfile" { this.begin("classfile"); }
<classfile>\s+ { /* ignore whitespace */ }
<classfile>[^\n]+ { this.popState(); return 'CLASSFILE'; }
<INITIAL><<EOF>> { return 'EOF'; }
/lex
%start root
%%
root
: CLASSFILE EOF { return $1; }
;
不幸的是,當我運行 「jison javap.jison」,我得到這個錯誤:
undefined:5
case 0:"Classfile" { this.begin("classfile"); }
^
SyntaxError: Unexpected token {
at Function (<anonymous>)
at Object.buildActions (C:\Users\cdmck_000\AppData\Roaming\npm\node_modules\jison\node_modules\jison-lex\regexp-lexer.js:118:12)
at Object.RegExpLexer (C:\Users\cdmck_000\AppData\Roaming\npm\node_modules\jison\node_modules\jison-lex\regexp-lexer.js:131:39)
at Jison_Generator (C:\Users\cdmck_000\AppData\Roaming\npm\node_modules\jison\lib\jison.js:108:22)
at (anonymous function) (C:\Users\cdmck_000\AppData\Roaming\npm\node_modules\jison\lib\util\typal.js:23:28)
at new o.constructor (C:\Users\cdmck_000\AppData\Roaming\npm\node_modules\jison\lib\util\typal.js:77:70)
at new Jison_Generator (C:\Users\cdmck_000\AppData\Roaming\npm\node_modules\jison\lib\jison.js:1578:20)
at processGrammar (C:\Users\cdmck_000\AppData\Roaming\npm\node_modules\jison\lib\cli.js:87:21)
at Object.exports.main (C:\Users\cdmck_000\AppData\Roaming\npm\node_modules\jison\lib\cli.js:61:56)
at Object.<anonymous> (C:\Users\cdmck_000\AppData\Roaming\npm\node_modules\jison\lib\cli.js:105:13)
我試着\w+
但隨後更換"Classfile"
它只是給我一個錯誤,而不是\w+
的\
。
看起來Jison可能壞了:https://github.com/zaach/jison/issues/152 – cdmckay 2013-03-11 21:01:05
我降級到了0.3.12。 'calculator.jison'解析器現在可以構建,但我仍然遇到同樣的錯誤。 – cdmckay 2013-03-11 21:11:06