マーク付けに使う文字の変更 #7
基本的に前回のコードで動作しているのだが、違和感のある部分を見つけた。
といっても、エラー表示の文言なので本質的な動作には関係ない。
$ echo -n "(b()" | ./parser error: illegal left parenthesis
のようなエラーメッセージはデフォルトのメタ文字に対してはいいのだが、
$ echo -n "abac" | ./parser -sa -ec error: illegal left parenthesis
では奇妙なメッセージになってしまう。
...snip \(\) { yyerror("null string between mark-start and mark-end"); return 1; } \(: { yyerror("null marked string"); return 1; } \([^):]*\( { yyerror("illegal mark-start marker"); return 1; } \([^):]* { yyerror("unexpected EOF"); return 1; } \([^):]+:\) { yyerror("null annotation"); return 1; } \([^):]+:\( { yyerror("illegal mark-start marker"); return 1; } \([^):]+:[^)]* { yyerror("unexpected EOF"); return 1; } \) { yyerror("illegal mark-end marker"); return 1; } ...snip
規則部の不正入力関連のアクション内、yyerror関数に渡す引数だけを適当に変更した。
元々酷いがやっぱり酷いメッセージ。まあ意味は通るだろう。