摘要: 接着前面的 <程序中,调用Bison和Flex结合的小例子> 那一篇,再来整点新东西:http://www.cnblogs.com/gaojian/archive/2013/05/17/3083662.html我想,实际的工作中,绝对不会像逆波兰式计算器那样简单,直接就在语法分析器里完成计算。常常需要构造一颗语法树,然后把它传出来!例如各种数据库系统处理SQL文就是这样子。上程序: 1 [root@lex total]# cat lexer.l 2 %{ 3 4 #include "y.tab.h" 5 #include <stdio.h> 6 7 阅读全文
posted @ 2013-05-17 16:57 健哥的数据花园 阅读(872) 评论(0) 推荐(0)
摘要: 网上的很多程序,对初次接触Bison和Flex的人而言,都有点复杂,看最简单的例子更好些:http://stackoverflow.com/questions/1920604/how-to-make-yy-input-point-to-a-string-rather-than-stdin-in-lex-yacc-solaris我稍微修改一下,说说自己的理解,也作为一个备忘:Flex程序: 1 [root@lex total]# cat lexer.l 2 %{ 3 4 #include "y.tab.h" 5 #include <stdio.h> 6 7 8 # 阅读全文
posted @ 2013-05-17 15:13 健哥的数据花园 阅读(3541) 评论(0) 推荐(0)
摘要: 网上很多例子,都是yacc和lex结合的。而我想找一个单纯使用 lex的例子。而且可以从我的主程序来调用它。上程序:第一步,编写 flex 文件:example.flex从网上找到的,其功能是对行数和字符数计数。 1 [root@cop01 tst]# cat example.flex 2 /* name: example.flex */ 3 %option noyywrap 4 %{ 5 int num_lines =0, num_chars=0; 6 %} 7 %% 8 9 \n ++num_lines; ++num_chars;10 . ++num_chars;11 12 %%13 1. 阅读全文
posted @ 2013-05-17 12:03 健哥的数据花园 阅读(1053) 评论(2) 推荐(0)