读龙书学编译原理 语法分析(15)...

Posted 内脏坏了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读龙书学编译原理 语法分析(15)...相关的知识,希望对你有一定的参考价值。

到这里词法分析模块就接近尾声了, 下面对词法分析模块进行总结 :

递归下降本质上也算是自顶向下的分析算法, 适合手工编码, 它相对来说更加灵活, 能够对于特定的DSL进行更加灵活的处理优化, 但是相对来说比较慢.而自动生成器则恰好相反, 接下来是一个LR(1)语法生成器的实例 -- YACC.

首先这是yacc所需的源文件的结构, 通过输入这个文件yacc能为我们生成实际的语法分析器的代码...

 

由图中可以看出该文件分为三个部分, 下面是实例代码 :

 1 %{
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4     int yylex();
 5     void yyerror(char* err);
 6 %}
 7 
 8 %left \'+\'
 9 
10 %%
11 
12 lines: line
13      | line lines ;
14 
15 line: exp \'\\n\';
16 exp: n
17    | exp \'+\' exp ;
18 
19 n: \'1\'
20  | \'2\'
21  | \'3\'
22  | \'4\'
23  | \'5\'
24  | \'6\'
25  | \'7\'
26  | \'8\'
27  | \'9\'
28  | \'0\' ;
29 
30 %%
31 
32 int yylex(){
33     return getchar();
34 }
35 
36 void yyerror(char* err){
37     printf("%s\\n", err);
38 }
39 
40 int main (int argc, char* argv[]){
41     yyparse();
42     return 0;
43 }

这是输出结构 :

[风@ ~] $ bison test.y
[风@ ~] $ gcc test.tab.c
[风@ ~] $ ./a.out
2+3+4
3+4
2
+
syntax error
[风@ ~] $ 

 

大概就是这样...

以上是关于读龙书学编译原理 语法分析(15)...的主要内容,如果未能解决你的问题,请参考以下文章

读龙书学编译原理 语法翻译...

读龙书学编译原理 语法分析(12)...

读龙书学编译原理 语义分析...

读龙书学编译原理 手撸编译器...

读龙书学编译原理 手撸编译器...

读龙书学编译原理 代码生成...