引用符なしで引用符付きの文字列をキャプチャしようとしています。私はこの端末を持っています
%token <string> STRING
そしてこのプロダクション
constant:
| QUOTE STRING QUOTE { String($2) }
これらのレクサー規則とともに
| '\'' { QUOTE }
| [^ '\'']* { STRING (lexeme lexbuf) } //final regex before eof
a に至るまでのすべてを、QUOTE
解析しない単一の語彙素として解釈しているようです。したがって、私の問題は文法のどこかにあるのかもしれません-よくわかりません. 私はこれを正しい方法で行っていますか?文字列から引用符を除外しようとする前は、問題なく解析されていました。
アップデート
次のレクサー規則にはあいまいさがあると思います
let name = alpha (alpha | digit | '_')*
let identifier = name ('.' name)*
次のルールは、STRING
| identifier { ID (lexeme lexbuf) }
STRING
正規表現に引用符を含めずにこれらを明確にする方法はありますか?