« 今日のメモ | Main | 日記 »

2004.04.26

懲りずにJavacc

しょうがないので、

Exception in thread "main" java.lang.Error: ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.

でググろう。

ここを見て、原因判明?。良くわかってないのだが、2章の例題と同じフォルダーで作業したのがいけないようだ。必要なファイルだけコピーして、もう一度、Javacc Javacを実行する。

ちょっと結果が変わった。

### Encountered "3" at line 1, column 1.
Was expecting one of:
<EOF>
"-" ...
"(" ...
< LITERAL> ...


System.out.print("in PrmExpr()");とかprintfデバッグで試行錯誤する。
わかった。TOKENの宣言順って、そのまま判定の優先順位なんだ。

TOKEN :
{
< LITERAL: (["0"-"9"])+ >
}

TOKEN :
{
< ANYOTHER: ~[] >
}

この < LITERAL>と < ANYOTHER>の順序が逆だ。3+5とかでは、まず3の < LITERAL>を解析しに行くのに、その前に < ANYOTHER>にぶつかっていた気がする。順序を変えてとりあえず動いた!

なーるほど。

|

« 今日のメモ | Main | 日記 »

Comments

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/18154/497411

Listed below are links to weblogs that reference 懲りずにJavacc:

« 今日のメモ | Main | 日記 »