深入探索Flex与Bison:从简单程序到复杂语法解析
1. 简单Flex程序示例
在编写程序时,有时需要包含同一目录下特定于当前程序的文件,同时跳过其他目录中的库文件。以下是一个简单的主程序示例,它会调用 newfile 函数处理文件,并在成功时调用 yylex 函数:
int
main(argc, argv)
int argc;
char **argv;
{
int i;
if(argc < 2) {
fprintf(stderr, "need filename\n");
return 1;
}
for(i = 1; i < argc; i++) {
if(newfile(argv[i]))
yylex();
}
printrefs();
return 0;
}
这个程序是一个较为现实的大型Flex程序的示例,它具有相当复杂的模式集,有一定复杂度的文件I/O操作,并且会对读取的文本进行处理。
1.1 相关练习
为了更好地理解和掌握相关知识,这里有几个练习供大家思考:
1. 匹配字符模式 :示例2 - 3是逐个字符进行匹配的,为什么不使用像 ^.*\n 这样的模式按行匹配呢?请提出一个或一组模式,用于匹配更大块的文本,同时要考虑 ^.* 无法工作的原因。
2. 大小写处理 :在某
超级会员免费看
订阅专栏 解锁全文
47

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



