编译原理符号表
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
确定符号表的组织方式,一般应包括名字栏和信息栏,其中名字栏作为关键字。
要考虑能够存储有关名字的信息,并可以高效地完成如下操作:
1.查找:根据给定的名字,在符号表中查找其信息。
如果该名字在符号表中不测试范例:
procedure test; var b,c,i:integer;
begin b:=1; if a>b then
c:=a+b else
c:=a-b;
for i:=0 to 3
do
begin
c:=i;
end;
end;
符号表的结构
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
struct
{ int m;
char name[20]; char inf[20];
}co[999]; int num;
include 称为文件包含命令,其意义是把尖括号""或引号<>内指定的文件包含到本程序中,成为本程序的一部分。
被包含的文件通常是由系统提供的,其扩展名为.h 而stdio为standard input output的缩写,意为“标准输入输出” .。
#include<string,h>这是C语言/C++中的字符串处理函数的头文件。
#include <ctype.h>是用作字符处理的,#include <stdlib.h>是用于定义杂项函数及内存分配函数,最后是一个结构函数,分别定义了符号名,信息,个数等变量。
符号显示
在C-Free中用了void display(),将已经输入进系统的符号全部都显示出来 3. 符号查找
本符号表系统中用void find() ,并通过for循环将所要查找的符号及其信息全都显示出来。
如果查找的字符存在,则在显示之前,运用system(“cls”)进行了清屏,把之前屏幕上所显示的内容全部清除,同时,在显示完成以后,又用了if 语句判断是否要删除此符号及其信息。
如果要删除信息,则将该符号中的数拷贝到另一个数组中去。
如果查找的字符不存在,则提示是否添加此字符。
4. 符号添加
采用void add(),将需要添加的符号及其信息添加进系统,还是通过使用for 语句,将符号信息一个个地输入进系统。