flex-lexer - Flex 中的单线或多线字符串检测

标签 flex-lexer lex lexical-analysis

我编写了一个 Flex 程序来检测给定的单词是否是动词。输入将从文本文件中获取。我想改进代码。有什么方法可以检测输入文件中的单行或多行字符串(例如:“我是一个男孩”或“我是一个男孩\我喜欢足球”)。在这种情况下,输出将是“找到单/多行字符串”,这就是我想要的程序。我怎样才能做到这些?请帮忙。这是我的示例代码:

%%

[\t]+

is   |

am   |

are  |

was  |

were {printf("%s: is a verb",yytext);}

[a-zA-Z]+ {printf("%s: is a verb",yytext);}

. |\n

%%

int main(int argc, char *argv[]){    
    yyin = fopen(argv[1], "r");    
    yylex();         
    fclose(yyin);
}

最佳答案

向词法分析器添加单个规则来识别字符串(可以分布在多行中)非常容易:

%%
["][^"]*["] {printf("'%s': is a string\n", yytext); }
[a-zA-Z]+ {printf("%s: is a word\n",yytext); }
[ \t\n]+
.
%%
int main(int argc, char *argv[]){    
    yyin = fopen(argv[1], "r");    
    yylex();         
    fclose(yyin);
}

(我对其进行了一些整理,以重点关注字符串与无字符串的演示。)

关于flex-lexer - Flex 中的单线或多线字符串检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733816/

相关文章:

c - flex/lex 中字符串文字的正则表达式

bison - 如何使用yacc解析器检测错误行号

regex - 柔性/莱克斯 : Lookahead predicate - unrecognized rule

Azure 认知搜索 - 什么时候会使用不同的搜索和索引分析器?

java - 伪编程语言的正则表达式

检查 flex 中未完成的评论

GCC 在 bison 生成的头文件中显示 "syntax error before numeric constant"

regex - 带有句点 "."的 Flex 规则未编译

c - 在 Mac 上安装 flex(词法分析器)

c - 修复给定代码中的冲突? "25 shift/reduce conflicts [-Wconflicts-sr] "