全て、
私のLexファイルでは、一部の演算子をトークンとして認識しています。この演算子の一部は
":p"
and
":"
問題は、魔女が:pで始まる単語は、次のよう":presentation"
に認識されないことです。
':' word /*grammar*/
":p"
次のトークンとして返されたlex値が原因で、解析エラーがトリガーされます
このあいまいさをどのように解決できますか?
全て、
私のLexファイルでは、一部の演算子をトークンとして認識しています。この演算子の一部は
":p"
and
":"
問題は、魔女が:pで始まる単語は、次のよう":presentation"
に認識されないことです。
':' word /*grammar*/
":p"
次のトークンとして返されたlex値が原因で、解析エラーがトリガーされます
このあいまいさをどのように解決できますか?
代わりに、「シンボル」トークン全体に一致するようにレクサールールを定義する必要があります。
:[a-zA-Z_][a-zA-Z0-9_]* { yylval.symbol = strdup(yytext + 1); return SYMBOL; }
必要に応じて、このルールをチェックして:p
、特別な場合を指定できます。例:
:[a-zA-Z_][a-zA-Z0-9_]* {
if (strcmp(yytext, ":p") == 0) {
return OP_P;
}
yylval.symbol = strdup(yytext + 1);
return SYMBOL;
}