博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dragonbook compilers principles, techniques, & Tools不错的附录A源代码
阅读量:2066 次
发布时间:2019-04-29

本文共 960 字,大约阅读时间需要 3 分钟。

 

 

 

 

 

构造函数的递归,递归地构造树

figure 2-39:

program  ->  block                    { return block.n;}

    block -> '{' stmts '}'                { block.n = stmts.n;}

    stmts -> stmts1 stmts            { stmts.n = new Seq(stmts1.n, stmt.n); }

            | e                                  { stmts.n = new null; }

    stmt  -> expr;                         { stmt.n = new Eval(expr.n); }

            | if( expr ) stmt1             { stmt.n = new If( expr.n, stmt1.n ); }
            | while( expr ) stmt1       { stmt.n = new While(expr.n, stmt1.n); } 
            | do stmt1 while( expr ); { stmt.n = new Do( stmt1.n, expr.n ); }
            | block                            { stmt.n = block.n; }
            
    expr  -> rel = expr1                 { expr.n = new Assign('=', rel.n, expr1.n); }
            | rel                                 { expr.n = rel.n; }
            
    rel   -> rel1 < add                   { rel.n = new Rel('<', rel1.n,  add.n); }
            | rel1 <= add                  { rel.n = new Rel('<=', rel1.n, add.n); }
            |add                               { rel.n = add.n; }
            
    add   -> add1 + term              { add.n = new Op('+', add1.n, term.n); }
            | term                             { add.n = term.n; }

    term  -> term1 * factor           {term.n = new Op('*', term1.n, factor.n);}

            | factor                           { term.n = factor.n; }

    factor-> ( expr )                     { factor.n = expr.n; }

            | num                             { factor.n = new Num(num.value); }

转载地址:http://vwfmf.baihongyu.com/

你可能感兴趣的文章
k8s集群内的节点,可能没你想象的那么健壮!(磁盘管理篇)
查看>>
利用 ebpf sockmap/redirection 提升 socket 性能(2020)
查看>>
春节前最后一波福利,Alibaba Java 训练营]5天突破面向对象编程限时免费报名!...
查看>>
我就要在容器里写文件!?
查看>>
支付宝集五福最全攻略,五分钟集齐五福!
查看>>
Runc 容器初始化和容器逃逸
查看>>
使用 GDB + Qemu 调试 Linux 内核
查看>>
介绍一个小工具:SSL-exporter
查看>>
深入理解 tc ebpf 的 direct-action (da) 模式(2020)
查看>>
为容器时代设计的高级 eBPF 内核特性(FOSDEM, 2021)
查看>>
Loki系列文章
查看>>
字节跳动面试官问:微服务下如何保证分布式事务的最终一致性?
查看>>
使用 Prometheus 监控 WireGuard
查看>>
BPF 可移植性和 CO-RE(一次编译,到处运行)
查看>>
万字长文:彻底搞懂容器镜像构建
查看>>
GitHub 又又又多了一个新主题 —— Dimmed Dark 主题!
查看>>
cgroup 挂载失败是什么鬼???
查看>>
深入 kubernetes API 的源码实现
查看>>
真香!使用 Goland 网页版实现真正的云开发
查看>>
又超时了!Etcd分布式锁你用明白了吗?
查看>>