2013-03-11 79 views
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+\

+1

看起來Jison可能壞了:https://github.com/zaach/jison/issues/152 – cdmckay 2013-03-11 21:01:05

+0

我降級到了0.3.12。 'calculator.jison'解析器現在可以構建,但我仍然遇到同樣的錯誤。 – cdmckay 2013-03-11 21:11:06

回答

2

我將行尾從Windows格式轉換爲UNIX格式,問題就消失了。