云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 山东科技大学编译原理课程设计

山东科技大学编译原理课程设计

  • 62 次阅读
  • 3 次下载
  • 2025/12/7 8:46:36

山东科技大学学生课程设计

词法分析之基于文法的实现

一、设计目的

通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。

二、设计要求

编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。 并依次输出各个单词的内部编码及单词符号自身值。

(遇到错误时可显示“Error”,然后跳过错误部分继续显示)

三、设计说明 1. 需求分析:

a) 输入及其范围

识别保留字:if、int、for、while、do、return、break、continue等;

保留字类别码为1。

其他的都识别为标识符;单词类别码为2。 常数为无符号整形数;单词类别码为3。

运算符包括:+、-、*、/、=、>、<、>=、<=、!= ;类别码为4。 分隔符包括:,、;、{、}、(、); 类别码为5。 错误字符 类别码为 6。

10

山东科技大学学生课程设计

b) 输出形式

词法分析器的单词符号常常表示成以下的二元式(单词类别码,单词符号的属性值)。本实验中,可采用的是一大类符号一类别码的方式。

c) 程序功能

词法分析器的功能是输入源程序,输出单词符号。

d) 测试数据

测试输入的程序为:

main() {

int a, b; a = 10; b = a + 20;

}

2. 概要设计

a)数据类型的定义

定义三个字符串,用于输入程序单词的匹配。

string Rword[RWD] = {\string Opear[OPEAR] = {\string Separ[SEPAR] = {\

b) 主程序流程

11

山东科技大学学生课程设计

3. 详细设计

void main() {

vector input;

vector::iterator iter;

/*将源代码中的单词从文件中读出按成分存放在input中*/ ifstream myf; string str = \

myf.open(\ if(myf.fail()) {

cout<<\ }

char ch;

ch = myf.get(); while(!myf.eof())

12

山东科技大学学生课程设计

{

for(int i=0;i < SEPAR;i++)//判断是否为分隔符 {

string temp = \ temp += ch;

if(temp == Separ[i]) {

if(str != \ {

input.push_back(str); str = \ }

str = ch;

input.push_back(str); str = \ ch=myf.get(); break; } }

if(ch=='\\t' || ch == ' ' || ch=='\\n')//判断是否为空格,回车

{

if(str != \ {

input.push_back(str); str = \ }

ch=myf.get(); }

else if(ch=='!' || ch=='>' || ch=='<' || ch=='=')//判断是否为运算符 {

if(str != \ {

input.push_back(str); str = \ }

13

搜索更多关于: 山东科技大学编译原理课程设计 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

山东科技大学学生课程设计 词法分析之基于文法的实现 一、设计目的 通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。 二、设计要求 编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。 并依次输出各个单词的内部编码及单词符号自身值。 (遇到错误时可显示“Error”,然后跳过错误部分继续显示) 三、设计说明 1. 需求分析: a) 输入及其范围 识别保留字:if、int、for、while、do、return、break、continue等; 保留字类别码为1。

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com