我需要在C中处理一个字符串,其中某些单词(如果存在)必须转换为大写.我的第一选择是在LEX中使用这样的东西:
%%
word1 {setToUppercase(yytext);RETURN WORD1;}
word2 {setToUppercase(yytext);RETURN WORD2;}
word3 {setToUppercase(yytext);RETURN WORD3;}
%%
Run Code Online (Sandbox Code Playgroud)
我看到的问题是我没有检测到某些字符是否为大写(fe Word1,wOrd1 ......).这可能意味着一个接一个地列出:
%%
word1 |
Word1 |
WOrd1
{setToUppercase(yytext);RETURN WORD1;}
%%
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以定义这种特定的令牌在不区分大小写的模式下进行比较?我发现我可以编译词法分析器不区分大小写,但这会影响我程序的其他部分.
如果没有,任何解决方案建议?
Dev*_*lar 16
您可以在.l文件中设置不区分大小写:
%option caseless
Run Code Online (Sandbox Code Playgroud)
你可以打电话flex -i.
或者您可以声明个别规则不区分大小写:
(?i:word)
Run Code Online (Sandbox Code Playgroud)
似乎有效的方法是这样的:
(W|w)(O|o)(R|r)(D|d) {setToUppercase(yytext);}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4716 次 |
| 最近记录: |