私は Flex/Bison を約 6 時間使用してきましたが、解決できない最初の問題は次のとおりです。
次のファイルがあります...
state state1: {
1-3: 255
4: 255
}
...これを、cat と | を使用して flex/bison プログラムに渡します。flex ファイルには次の行が含まれています。
\bstate\b { return STATE; }
そして、これをさらに下に:
.* { fprintf(stderr, "Lexer error on line %d: \"%s\"\n", linenum, yytext); exit(-1); }
ファイル内で \bstate\b が一致するはずだと考えるべきですが、そうではありません。代わりに、次の出力が得られます。
"exer error on line 1: "state state1: {
これはいくつかの点で奇妙です。まず、Lexer シームの L が " に置き換えられましたが、さらに重要なことに、状態が一致しませんでした。
もちろん、\bstate\b は .* の前にあり、右側のセクションにあります。
助けてくれてありがとう、ジャン