Loading...

Tag Archive for 'racc'

    AD: 猛买 | 快递查询 | Jobsdigg | 很棒的男装店

用Racc编写解释器

在Twitter上看到盛大举办的校园牛人大赛,其中有“云计算脚本比赛”。看了下题目,开始悔恨大学里没好好学编译原理。但又手痒,就想用Racc试试。做题过程居然很顺利,从学习Racc到做完前三道题花了两三个小时,于是写一点有关Racc的示例,算是学习笔记。 以“云计算脚本比赛”第一题为例,要求执行如下脚本后,得到“Hello, 老赵”。 SET name = “老赵” RETURN “Hello, ” + name 简单来说,用Racc写成解释器,可以把上面的脚本,转化为Ruby代码并执行。 安装Racc: gem install racc 创建一个level_1.y文件,定义一个JeffParser类。 class JeffParser token T_SET T_RETURN T_STRING T_VAR rule lines: | lines T_SET T_VAR ‘=’ T_STRING {@local_vars[val[2]] = val[4] } | lines T_RETURN exp {result = val[2]} exp: exp ‘+’ exp {result = val[0] + val[2] } | [...]