深入探索Flex与Bison:从词法分析到语法解析
1. Flex基础与应用
Flex是一个强大的词法分析器生成器,它能够根据用户定义的模式将输入文本分割成一个个的词法单元(tokens)。
1.1 正则表达式模式
在Flex中,我们可以使用各种正则表达式模式来匹配不同的输入。例如,最后一个模式是点号( . ),它在正则表达式中表示任意字符,类似于shell脚本中的 ? 。以下是一个简单的示例代码,用于统计输入中的字符数:
/* 统计字符数 */
%%
. { chars++; }
%%
这里的点号模式匹配任意字符,每次匹配成功后,字符计数器 chars 就会加1。
1.2 简单的Flex程序
下面是一个完整的简单Flex程序示例,用于统计输入中的单词数、行数和字符数:
/* 统计单词数、行数和字符数 */
%{
int words = 0, lines = 0, chars = 0;
%}
%%
[a-zA-Z]+ { words++; chars += strlen(yytext); }
\n { lines++; chars++; }
. { chars++; }
%%
main()
{
yylex();
printf("%d %d %d\n", lines, words, chars);
}
这个程序的执
超级会员免费看
订阅专栏 解锁全文
32

被折叠的 条评论
为什么被折叠?



