Advertisement

介绍小白关于第9章minus-C语言编译器的编写

阅读量:

简介

在上一节8中提及,通过人工构建的语法树对以下C语言代码进行解析:

复制代码
    a = 1
    sum = 0
    input(x)
    while(a <= x){
       sum = sum + a
       a = a+1;
    }
    print(sum)
    
      
      
      
      
      
      
      
      
    

构建语法树的过程不应由用户手动完成,编译器需要采用一种能够自动实现该功能的机制。本部分内容将阐述如何借助前1-6节所介绍的lex、yacc及符号表知识,结合7-8节涉及的语法树相关技术,来实现对指定C语言代码的自动化构建流程。

动机

在第5节所介绍的具备变量支持功能的计算器中,针对expr的语法分析过程采用了如下所示的yacc代码:

复制代码
     lines   :   lines expr EOL  { printf("%g\n", $2); }
            |   lines EOL
            |   lines COMMENT
||

            ;
    
    expr    :   expr PLUS expr  {
$$
= $1 + $3; }

全部评论 (0)

还没有任何评论哟~