とばすぜとばすぜ空白
JavaCC+Verilogの続き
今の書き方だと、空白が完全に無視されている。
"module modulue"もOKだし、"modulemodule"もOkだ。これじゃだめなので、JavaCCの本を読んでみる。そうだ、最初のサンプル"I LOVE YOU"なら、空白区別してるんじゃん、と思うが、"ILOVEYOU"でもパースに成功している。ダメじゃん。
一つ発見!なんだって
options {
DEBUG_PARSER=true;
}
で、トレース機能が追加されるのか。頑張ってprintln入れてたのに_| ̄|○
急がば回れだ。テキストコマンドのサンプルと、VMのサンプルも動かしてみよう。
ああそうか。TOKENの定義が、宣言順がそのまま優先順位になっているから
DOSコマンド動くようになった。子プロセスの呼び出し方が少しわかった。
って、これもcat Command.javaとcatCommand.javaを区別してないな。
んで、<*>SKIP ってどういう意味だ。
今までTOKEN :しかなかったのに、
そして、JavaCCの本、74ページより「JavaCCでは、トークンを区切るデミリタを特別に指定する機能はない」と。はぁ。
続いてミニコンパイラを見てみるが、思いっきりSKIPで空白とばしている。これだと、ifの後に変数aaaaが来たときと、変数ifaaaaを区別できないではないかと悩む。
ちょっとわかった。ifの後には必ず(が来るんだ。
Verilogの例で行くと、moduleの次は必ず(だ。
それでも、int a;は変数aの宣言で、inta;は構文エラー。この違いはどうしてるんだろう。VMコードも動かしてみよう。
今日のメモ
最近ベクターがつまらない。
サイトリニューアルしてから、マイナーなソフトが見つけにくくなった。
The comments to this entry are closed.
Comments