资源简介
pl0中增加bool类型处理支持,解压以后就可以运行,献给为编译奋斗的人们
代码片段和文件信息
// pl0 compiler source code
#include
#include
#include
#include
#include “set.h“
#include “pl0.h“
//////////////////////////////////////////////////////////////////////
// print error message.
void error(n)//出错处理程序,指明错误类型
{
int i;
printf(“ “);
for (i = 1; i <= cc - 1; i++) //cc表示已识别字符个数
printf(“ “);
fprintf(outfile “ “);
fprintf(outfile “^\n“); //fprintf函数是将字符串写入文件,这里是将换行符写入文件
printf(“^\n“); //printf函数是在屏幕上输出
fprintf(outfile “Error %3d: %s\n“ n err_msg[n]);
printf(“Error %3d: %s\n“ n err_msg[n]);//输出错误类型,err_msg[]在前面已定义
err++;//err表示的是错误数,这里将错误数加一
} // error
//////////////////////////////////////////////////////////////////////
/*这个函数的作用是获取一个字符,即读入下一个字符,比如一行代码如下所示:
const a:=1b:=3;
当它已读入const中的n后,调用这个函数,获取下一个字符就是s,这个函数是为
下一个函数getsym()做铺垫的,getsym()要频繁的调用这个函数*/
void getch(void)
{
if (cc == ll)//字符个数等于长度其中cc表示已识别字符个数,ll表示整行字符串的长度
{ //这个函数使用了缓冲区技术,它先将一行代码读入缓冲区,根据cc和ll来判断缓冲区
//的字符是否已识别完即ll==cc表明断缓冲区的字符已识别完,需要再读入一行代码
if (feof(infile)) //代码是以文件的形式提供的,这个函数判断是否到了文件末尾
{
printf(“\nPROGRAM INCOMPLETE\n“);
exit(1);
}
ll = cc = 0;
fprintf(outfile “%5d “ cx);
printf(“%5d “ cx);
while ( (!feof(infile)) // added & modified by alex 01-02-09
&& ((ch = getc(infile)) != ‘\n‘))
{
fprintf(outfile “%c“ ch);
printf(“%c“ ch);
line[++ll] = ch;
} // while
fprintf(outfile “\n“);
printf(“\n“);
line[++ll] = ‘ ‘; //缓冲区数组
}
ch = line[++cc];//如果cc!=ll,继续从缓冲区中获取字符
} // getch//ch跳到下一个字符上
//////////////////////////////////////////////////////////////////////
int boolroint()//判断是否是bool类型或者int类型
{
int i=0;
for(i=0;i {
if (line[i]==‘:‘)
{
break;
}
}
if (line[i]==‘:‘)
{
if (line[i+1]==‘b‘)//bool
{
return 1;
}
if(line[i+1]==‘i‘)//intager
{
return 0;
}
}
}
//////////////////////////////////////////////////////////////////////
// gets a symbol from input stream.
/*这个函数的作用是识别关键字、标识符、数字,比如一行代码如下所示:
const a:=1b:=3;
调用这个函数后它就识别出const这个关键字,并将它记入符号表,再调用的话就会识别出‘,’
然后识别出a这个标识符 */
void getsym(void)
{
int i k;
char a[MAXIDLEN + 1]; // MAXIDLEN 标识符的长度 设为 10
while (ch == ‘ ‘|| ch == ‘\t‘) //跳过空格
// modified.修改 by yzhang 02-03-12add some white space
getch();
if (isalpha(ch))//识别出关键字或标识符
{ // symbol is a reserved word or an identifier.
k = 0;
do
{
if (k < MAXIDLEN)
a[k++] = ch;
getch();
}
while (isalpha(ch) || isdigit(ch));//识别出关键字或标识符数字
a[k] = 0;
strcpy(id a);
word[0] = id;//word关键字集合
i = NRW; // NRW 关键字的长度 设为 11
while (strcmp(id word[i--]));
if (++i)
{
sym = wsym[i]; // symbol is a reserved word
if (sym == SYM_TRUE)
{
num = 1;
}
if (sym == SYM_FALSE)
{
num = 0;
}
}
else
sym = SYM_IDENTIFIER; // symbol is an identifier
}
else if (isdigit(ch))//识别出数字
{ // symbol is a number.
k = num = 0;
sym = SYM_NUMBER;
do
{
num = num *
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-07-16 22:41 添加BOOL\
目录 0 2012-07-16 22:41 添加BOOL\Debug\
文件 44 2002-02-28 10:28 添加BOOL\Debug\e1
文件 196669 2012-07-16 16:23 添加BOOL\Debug\pl0.exe
文件 320796 2012-07-16 16:23 添加BOOL\Debug\pl0.ilk
文件 54859 2012-07-16 16:23 添加BOOL\Debug\pl0.obj
文件 221984 2012-07-16 15:29 添加BOOL\Debug\pl0.pch
文件 517120 2012-07-16 16:35 添加BOOL\Debug\pl0.pdb
文件 6099 2009-06-15 22:47 添加BOOL\Debug\set.obj
文件 58368 2012-07-16 16:27 添加BOOL\Debug\vc60.idb
文件 53248 2012-07-16 16:23 添加BOOL\Debug\vc60.pdb
文件 1504 2012-07-16 16:27 添加BOOL\example.out
文件 182 2012-07-16 16:25 添加BOOL\example.txt
文件 28134 2012-07-16 16:21 添加BOOL\pl0.c
文件 3537 2009-06-21 00:05 添加BOOL\pl0.dsp
文件 514 2009-06-15 22:18 添加BOOL\pl0.dsw
文件 5180 2012-07-16 14:52 添加BOOL\pl0.h
文件 132096 2012-07-16 16:27 添加BOOL\pl0.ncb
文件 49664 2012-07-16 16:27 添加BOOL\pl0.opt
文件 750 2012-07-16 16:23 添加BOOL\pl0.plg
文件 2177 2009-06-15 20:29 添加BOOL\set.c
文件 377 2012-07-16 15:29 添加BOOL\set.h
- 上一篇:pl0解释器的分离实现代码程序
- 下一篇:LCD12864硬件连接图
相关资源
- bool商城代码+笔记+流程图
- 简单的PL0编译器
- 现代密码学中的布尔函数
- 布尔表达式的递归下降翻译程序设计
- 七参数转换及大地坐标系与空间坐标
- LabVIEW自定义布尔控件合集~1000种.rar
- 好看的labview布尔控件.zip
- 布尔沙七参数坐标转换
- 高效可用网格布尔运算
- 山东大学编译原理pl0实验.rar
- pl0编译器源代码
- PL0编译器源程序分析
- 编译原理实验报告分析PL0词法分析程
- 编译原理课程设计布尔表达式的语法
- 布尔矩阵与推荐系统带学习代码
- 《编译原理课程设计》-布尔表达式的
- 布尔表达式的语法分析及语义分析程
- 功能完整的PL0编译器,附带测试用例
- 编译原理布尔表达式计算器
- PL0词法语法分析器225358
- 编译原理课程设计含报告,源程序和
- 对PL0语言及其编译器进行扩充和修改
- pl0语法分析器
- 山东大学编译原理实验
- 广东工业大学编译原理实验报告PL0语
- 二维多边形布尔运算,包括多边形绘
- 雷达杂波的仿真,weibull分布的雷达杂
- 三维模型布尔运算 求并、交、差
- 三维模型的布尔运算研究
- 布尔表达式的LR翻译器,中间代码为四
评论
共有 条评论