質問内容
質問を評価する
(0ポイント)
|
Eclipse4.3とJavaCCを使って自分の考えている日本語で書けるようなプログラミング言語のコンパイラーを作ろうとしています。 今コメント文を読み飛ばすためのところを作っています。 私の考えている言語ではコメント文は以下の2パターンがあります。
・コメント文が1行のときの例 コメント ここはコメント
・コメント文が複数行のときの例 コメントここから ここはコメント ここもコメント ここもコメント コメントここまで
"コメント"や"コメントここから"の後、"コメントここまで"の前は全角あるいは半角のスペースを空けて書くことをルールにしようかとも思いましたが、"コメントここから"や"コメントここまで"をコメント本文と行を分けて書きたいこともあるだろうからとスペースなしでも読み飛ばすようにしようと思い、以下のように書いてみました。
SKIP: { "コメント"(~["\r","\r\n","\n"])* (["\r","\r\n","\n"])? }
MORE: { "コメントここから" :IN_COMMENTS }
< IN_COMMENTS >MORE: { (~[]) }
< IN_COMMENTS >SKIP: { "コメントここまで" :DEFAULT }
ですが、"コメント"の行で以下のようなエラーが出てしまいます。
Exception in thread "main" org.javacc.parser.TokenMgrError: Lexical error at line 51, column 16. Encountered: "\\" (92), after : ""
試しに"コメント"のSKIPを消すと、"コメントここから"の行で以下のようなエラーが出てしまいます。
Exception in thread "main" org.javacc.parser.TokenMgrError: Lexical error at line 52, column 31. Encountered: "\r" (13), after : "\"\u7e67\uff73\u7e5d\uff61\u7e5d\uff73\u7e5d\u533b\uff05\u7e3a\u8599\u00b0\u7e67\ufffd :IN_COMMENTS"
さらに"コメントここから"のMOREも消してみると、(~[])のところで以下のようなエラーが出てしまいます。
org.javacc.parser.ParseException: Encountered " "(" "( "" at line 51, column 3.
さらに、(~[])のMOREも消してみると、エラーはどこにも表れません。
そもそもEclipseでの色付けがそれらの箇所において正しくできていないことからもエラーが出てしまうことは予測がつくのですが、エラーメッセージや色付けが意味する情報を見てみても私には何が原因なのかが分かりません。
一度判定材料に日本語(というかUnicode)を用いていることが原因なのかと思もい、試しに半角英字のみにしてみましたが、それでも同じようなエラーが出てしみました。 そもそも"コメントここまで"の行でとくに何も言われないことからも、Unicodeが原因ではないと思っています。
一体何が原因なのでしょうか?
|