2013-03-11 5 views
2

javap 도구의 출력을 구문 분석 할 Jison을 사용하는 파서를 작성하려고합니다. 여기 내 .jison 파일의 내용이다 :Jison 파서의 SyntaxError

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"를 교체 시도했다 :

%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"를 실행하면,이 오류가 발생합니다 대신 \\w+ 인 경우 오류가 표시됩니다.

+1

Jison이 부러진 것 같습니다 : https://github.com/zaach/jison/issues/152 – cdmckay

+0

나는 0.3.12로 다운 그레이드했습니다. 'calculator.jison' 파서가 지금 빌드되지만, 여전히 내 오류가 발생합니다. – cdmckay

답변

2

줄 끝을 Windows 형식에서 UNIX 형식으로 변환했는데 문제가 해결되었습니다.