私は、ユーザーがYaccではなくLexでエラー状態を処理していますか?
A75PsN
A75PS
を入力した場合、ユーザは、私が
A75PKN
のようなものを言う場合、それは
でもマッチします
[aA][0-9]{2,2}[pP][sS][nN]? { return TOKEN; }
のようなlexの正規表現を持っていると仮定それがエラーになり、「キャラクターKが認識されず、S私は、私は周りを取得することができますどのように意味のあるエラー条件に
を持つことができるように、Yaccの中の文字列を今だけ
let [a-zA-Z]
num [0-9]
{let}{num}{2,2}{let}{2,3}
ようにそれを書いている。そして、基本的に再字句やっている何を「
この?
私が考えることができるのは名前付きグループを使用することだけです。
すごい素晴らしいレスポンス。 validate_id_string()はvalidate_id_string(yytext)のようにするべきではありませんか?検証するためにyytextを渡しますか? – DevDevDev
@DevDevDev:yytextはグローバルなので、yytextを渡すことはオプションです。関数を他の場所で使用するかどうかによって部分的に異なります。はい、パラメータはグローバルより優れています。しかし、私は一般的な技術を説明していました。いいコーディングスタイルの細かいことではありません。 –
ありがとう!私はあなたがvalidate_id_stringがyytextにアクセスすることを意味していたかどうか疑問に思っていたコーディングスタイルについてコメントしようとしていませんでした。 – DevDevDev