摘要: main.c 语法分析器与中间代码生成器,它调用词法分析器 token_analyze 词法分析器 queue.h 队列 stack.h 栈 linklist.h 链表 data_struct.h Token数据结构 FourElemFormula 四元式相关,如四元式的数据结构、打印(到文件)函数 阅读全文
posted @ 2016-10-09 13:19 lyzhou 阅读(1044) 评论(0) 推荐(0) 编辑
摘要: 一、符号表结构 二、哈希表的具体结构 三、与符号表相关的函数 int hashpjw(char *s) 散列函数计算 symtbl *mktable(symtbl *bt) 初始化一个符号表,表头before指向bt void addwidth(symtbl *st,int offset)将offs 阅读全文
posted @ 2016-10-09 13:16 lyzhou 阅读(1043) 评论(0) 推荐(0) 编辑
摘要: 1 /* 2 Author:ZhouLiyan* 3 Date:2016.08.01 4 Loc:Haerbin Institute Of Technology 5 */ 6 7 #include <stdio.h> 8 #include <stdlib.h> 9 #include <string. 阅读全文
posted @ 2016-10-09 13:14 lyzhou 阅读(1582) 评论(0) 推荐(0) 编辑
摘要: 一、语法分析器的工作流程为:每次从词法分析器产生的lex.txt文件中读取一个单词符号,根据预测分析表以及状态(整型)栈、符号(token结构体类型)栈的栈顶决定执行移进/规约/接受/error动作。 1 #include <stdio.h> 2 #include <stdlib.h> 3 #inc 阅读全文
posted @ 2016-10-09 13:00 lyzhou 阅读(3303) 评论(4) 推荐(0) 编辑
摘要: 在子函数里面动态申请的内存不会自动被系统收回的,因为这些空间在堆里面,而不是栈,平常所说的不能返回指向栈的指针,比如在子函数里面定义一个字符指针,指向常量"hello"因为函数调用完成这部分空间会自动释放,但是堆不会,所以会越积累愈多的,尤其是对这个子函数调用次数非常多就不妙了,申请的内存地址应该保 阅读全文
posted @ 2016-05-07 12:42 lyzhou 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 最近在写编译器,有这样一段代码 这段代码错在什么地方呢? 结构体To中的name和s的类型都是char*,即指针型的字符串。在函数ReadToken()中 直接将n2字符数组的地址赋值给name,n2是个局部变量,在函数退出后就会被销毁,n2地址中的值也没了,但是rt返回给主函数被压栈,rt->na 阅读全文
posted @ 2016-05-07 11:59 lyzhou 阅读(517) 评论(0) 推荐(0) 编辑
摘要: 原文链接:https://www.cs.uic.edu/~spopuri/cparser.html Satya Kiran PopuriGraduate StudentUniversity of Illinois at ChicagoChicago, IL 60607spopur2 [at] uic 阅读全文
posted @ 2016-04-08 17:30 lyzhou 阅读(413) 评论(0) 推荐(0) 编辑
摘要: 程序输入:从code.txt文件中读取内容 程序输出:识别出的单词序列,格式为:(种别码,属性值) ①对于关键字和运算符、分隔符来说,输出格式为(种别码,0),因为每个种别码能唯一地标识出是哪个单词 ②对于标识符来说,输出格式为(id的种别码即36,在哈希桶中的位置) ③对于常量(整数、浮点数、字符 阅读全文
posted @ 2016-03-28 20:31 lyzhou 阅读(2883) 评论(5) 推荐(1) 编辑
摘要: 树型结构的建立与遍历 树型结构的遍历是树型结构算法的基础,本程序演示二叉树的存储结构的建立和遍历过程。 (1) 编写建立二叉树的二叉链表存储结构的程序,并(用广义表的形式)显示并保存二叉树; (2) 采用二叉树的二叉链表存储结构,编写程序实现二叉树的先序、中序和后序遍历的递归和非递归算法以及层序遍历 阅读全文
posted @ 2016-03-06 16:30 lyzhou 阅读(609) 评论(0) 推荐(0) 编辑
摘要: 表达式求值是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。设计一个程序,演示用算符优先法对算术表达式求值的过程 (1)从键盘输入任意一个语法正确的(中缀)表达式,显示并保存该表达式。 (2)利用栈结构,把上述(中缀)表达式转换成后缀表达式,并显示栈的状态变化过程和所得到的后缀表达式。 阅读全文
posted @ 2016-03-05 16:54 lyzhou 阅读(3229) 评论(0) 推荐(0) 编辑