上篇笔记介绍了语法分析相关的一些基础概念,本篇笔记根据龙书第2.5节的内容实现一个针对简单表达式的后缀式语法翻译器Demo。
备注:原书中的demo是java实例,我给出的将是逻辑一致的Python版本的实现。
在简单后缀翻译器代码实现之前,还需要介绍几个基本概念。
1. 自顶向下分析法(top-down parsing)
顾名思义,top-down分析法的思路是推导产生式时,以产生式开始...
分类:
编程语言 时间:
2015-04-06 14:19:05
阅读次数:
384
本篇笔记是我对龙书第2.3-2.5节内容的理解,主要介绍编译器前端关于语法分析的众多基础概念。下篇笔记将根据本篇笔记的主要内容,实现一个针对简单表达式的后缀式语法翻译器Demo(原书中是java实例,我给出的将是逻辑一致的Python版本的实现)。
1. 语法分析(Syntax Analysis)
简单来说,语法分析的任务是分析输入的符号字符串(string of symbols, 通常是词法...
分类:
其他好文 时间:
2015-04-06 10:11:33
阅读次数:
129
转自http://blog.csdn.net/mvpsendoh/article/details/6440559目的:将中缀表达式(即标准形式的表达式)转换为后缀式。例子:a+b*c+(d*e+f)*g转换成abc*+de*f+g*+转换原则:1.当读到一个操作数时,立即将它放到输出中。操作符则不立...
分类:
其他好文 时间:
2015-03-21 15:32:27
阅读次数:
127
中缀式变后缀式
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述 人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀式的论述一般的数据结构书都有相关内容可供参看,这里不再赘述,现在你的任务是将中缀式变为后缀式。
输入第一行输入一个整数n,共有n组测试数据(n
每组测试数据只有一行,是一个长度不...
分类:
其他好文 时间:
2014-12-17 22:49:02
阅读次数:
230
中缀式变后缀式
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀式的论述一般的数据结构书都有相关内容可供参看,这里不再赘述,现在你的任务是将中缀式变为后缀式。
输入第一行输入一个整数n,共有n组测试数据(n
每组测试数据只有一行,是...
分类:
其他好文 时间:
2014-12-11 20:55:53
阅读次数:
212
题目来源
中缀式变后缀式
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀式的论述一般的数据结构书都有相关内容可供参看,这里不再赘述,现在你的任务是将中缀式变为后缀式。
输入第一行输入一个整数n,共有n组测试数据(n
每组测试...
分类:
其他好文 时间:
2014-12-06 11:25:02
阅读次数:
125
#include
#include
using namespace std;
int main()
{
char a[51],b[51];
int i,top;
while(gets(a)!=NULL)
{
top=-1;
for(i=0;a[i]!='\0';i++)
{
if(a[i]=='{'||a[i]=='['||a[i]=='(')
{
b[++...
分类:
其他好文 时间:
2014-12-05 00:50:15
阅读次数:
179
#include
using namespace std;
int youxian(char s)
{
if(s=='+'||s=='-') return 1;
else if(s=='*'||s=='/') return 2;
else if(s=='(') return 3;
else if(s==')') return 4;
}
int main()
{
int top=0;
...
分类:
其他好文 时间:
2014-12-05 00:49:26
阅读次数:
190
相信很多人刚开始学习编程的时候,也是为这个问题烦恼过吧,前缀式与后缀式,在很久之前,式没有办法区别++和--操作符的前缀和后缀的调用的。不过在C++已经得到了扩展。然而无论式前缀或者后缀,都只有一个参数。为了解决这个问题,C++规定后缀形式有一个int类型的参数,当函数..
分类:
编程语言 时间:
2014-12-01 16:21:34
阅读次数:
237
数据结构实验之栈三:后缀式求值Time Limit: 1000MS Memory limit: 65536K题目描述对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。输入输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。输出求该后缀式所对应的算术表达式的...
分类:
其他好文 时间:
2014-11-27 14:18:14
阅读次数:
114