1. Java中堆栈(stack)和堆(heap)(1)内存分配的策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代...
分类:
编程语言 时间:
2015-07-10 18:45:31
阅读次数:
185
#include
#include
#include
#include
#include
#include
#define MAX 100
using namespace std;
struct edge
{
char preNode; //节点表示只能用单个字符
char nex...
分类:
其他好文 时间:
2015-07-10 09:31:38
阅读次数:
211
脑洞时间:为什么世界上有那么多程序语言,那是腐朽的资本主义为了增加广大人民学习成本以及编译原理太过普及造成的,建议大学取消编译原理的一切课程,并挥起奥姆休的剃刀,把所有程序语言统统踢了,除机器语言外只留下两种语言:汇编和haskell(逃简明扼要的写一点haskell 好玩的东西首先是一些基本操作,...
分类:
其他好文 时间:
2015-07-08 14:11:36
阅读次数:
110
算法叫逆波兰表达式逆波兰表达式,它的语法规定,表达式必须以逆波兰表达式的方式给出。逆波兰表达式又叫做后缀表达式。这个知识点在数据结构和编译原理这两门课程中都有介绍,下面是一些例子: 正常的表达式 逆波兰表达式 a+b ---> a,b,+ a+(b-c) ---> a,b,c,-,+ a+(...
分类:
Web程序 时间:
2015-07-07 14:29:41
阅读次数:
195
#include#include#include using namespace std;#define N 200;/*关键字结构体定义*/typedef struct keyword{ char name[20];}KeyWord;/*符号表结构体定义*/typedef struct symbo...
分类:
其他好文 时间:
2015-07-05 23:56:49
阅读次数:
127
书是龙书
编译器中常用的方法可以分为自顶向下和自底向上的。一个是从语法分析树的顶部开始向底部构造语法分析树,一个则是从叶子节点开始,逐渐向根结点构造,这两种分析方法中,语法分析器的输入总是照着从左向右。
二义性:如果一个文法可以为某个句子生成多棵语法分析树,那么他就是二义性的。
例如例子id + id * id
消除左递归
如果一个文法中有一个非终结符号A使得对某个串a...
分类:
其他好文 时间:
2015-06-29 22:21:11
阅读次数:
231
以前只用编译器编译程序,现在学完编译原理这门课以后,通过编译大作业,我对编译器的工作原理有了比较清晰的认识
编译器的工作原理
编译器 (Compiler) 是一种将由一种语言编写的程序转换为另一种编程语言的可执行程序. 现代软件对于编译器的需求远甚从前, 究其原因很简单: 作为中间层, 编译器是构建更高层抽象的基础设施. 编译器意欲将人类可阅读的高阶代码, 翻译为机器能运行的低阶代码.
现代编...
分类:
编程语言 时间:
2015-06-28 17:10:51
阅读次数:
694
这个是看MOOC学编译原理的一个作业。
识别标识符和关键字,核心在于转移图,dfa的构造package bingone;import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;/**
* 手工构造词法分析器,标注的关键字有if for 。
* @author...
分类:
其他好文 时间:
2015-06-28 12:51:53
阅读次数:
107
这是大三下上编译原理时老师要求做的大作业1、实验具体要求 [题目和测试程序来自 李卫海老师:http://staff.ustc.edu.cn/~whli] 一、 符号集小写字母a、b、c、d、e、f、g、h、i、j、l、m、n、o、p、q、r、s、t、u、v、w、x、y、z数字0、1、2、3...
分类:
其他好文 时间:
2015-06-27 11:22:52
阅读次数:
197