次のようなlex正規表現があるとします
[aA][0-9]{2,2}[pP][sS][nN]? { return TOKEN; }
ユーザーが入力した場合
A75PsN
A75PS
一致します
しかし、ユーザーが次のようなことを言った場合
A75PKN
エラーで「文字 K が認識されません。S が必要です」と言ってほしいです。
私が今していることは、次のように書いているだけです
let [a-zA-Z]
num [0-9]
{let}{num}{2,2}{let}{2,3}
そして、本質的に Yacc で文字列を re-lex して、意味のあるエラー条件を設定できるようにします。
どうすればこれを回避できますか?
私が考えることができる唯一のことは、名前付きグループを使用することですか?