c - Lex:如何防止它与子字符串匹配?

标签 c lex

例如,我应该将“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/

相关文章:

c - 处理字符串时解析错误

c++ - 可变长度结构

lex - 文件名.l :16: EOF encountered inside an action

compiler-construction - Lex:一个计算输入中单词的小程序

c++ - 使用 gpfs​​_fcntl 的 EINVAL

c - 有没有成熟的解决方案来创建带有 ELF 符号和 C 语法命令解析器的即时 shell?

c++ - boost spirit : Lex + Qi error reporting

c - mpi 在结构中发送/接收多个可变长度数组

c - 如何在 Unix 中使用 wait() 作为非阻塞命令?

c - 如何高效计算 2 的大幂?