例如,我应该将“int”转换为“INT”。但是如果有“integer”这个词,我认为它不应该变成“INTeger”。
如果我定义 "int"printf("INT");
子串是匹配的。有什么办法可以防止这种情况发生吗?
最佳答案
我相信以下内容能满足您的需求。
%{
#include <stdio.h>
%}
ws [\t\n ]
%%
{ws}int{ws} { printf ("%cINT%c", *yytext, yytext[4]); }
. { printf ("%c", *yytext); }
要将其扩展到单词边界之外(在本例中为 {ws}
),您需要向 ws
添加修饰符或添加更多特定检查。
关于c - Lex:如何防止它与子字符串匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2359249/