编译原理|词法分析程序设计

词法分析程序设计

一、实验目的
设计、编制并调试一个简单语言CP(Compiler Principle)的词法分析程序,加深对词法分析原理的理解。

二、实验内容

  1. CP语言的词法
    (1) 关键词: begin end if then else for while do and or not
    注意:所有关键词都是小写的。
    (2) 标识符ID,与标准C语言一致,即:以下划线或字母开头的字母数字下划线组成的符号串。
    (3)无符号整数NUM:数字串
    (4)运算符和分界符: +、-、*、/、>、<、=、:=、>=、<=、<>、++、–、(、)、; 、 #
    注意::=表示赋值运算符、#表示注释开始的部分,;表示语句结束,<>表示不等关系
    (5) 空白符包括空格、制表符和换行符,用于分割ID、NUM、运算符、分界符和关键词,词法分析阶段要忽略空白符。
  2. 说明
    (1)CP语言是大小写敏感语言;
    (2)字母为a-zA-Z,数字为0-9;
    (3)学有余力同学可以在上述词法要求基础上进行扩充和改造;
    (4)每行代码中从#开始的部分为注释部分(参考python语法)
  3. 设计要求
    (1) 给出各类单词符号的分类编码(可以根据自己程序的需要来给各种类别单词编码,给每个词法单位一个编码,也可以给一个类别里所有符号都编同一个编码)。
    (2) 词法分析程序应该能发现输入串中的错误
    (3) 词法分析作为单独一遍,将词法分析程序输出的二元式序列保存为中间文件形式【也可以在屏幕窗口直接输出】

三、实验要求

  1. 写出程序框图、设计过程、主要数据结构等。
  2. 写出程序源代码,并调试通过,输出实验结果。

四、实验代码

#include<iostream>
#include<vector>
#include<string>
using namespace std;
struct {
    int number; string str[100]; } keywords = {
    11,"begin","end","if","then","else","for","while","do","and","or","not" }; //关键词
struct {
    int number; string str[100]; } operators = {
    13,"+","-","*","/",">","<","=",":=",">=","<=","<>","++","--"}; //运算符
struct {
    int number; string str[100]; } boundaries = {
    5,"(",")",",",";","#" }; //分界符
struct {
    int number; string str[100]; } identifieres = {
    0 }; //标识符,以下划线或字母开头的字母数字下划线组成的符号串。
struct {
    int number; string str[100]; } Unsigned_integer = {
    0 }; //无符号整数NUM:数字串
string changinStr(vector<char> a) {
   
    string temp(a.size(), ' ');
    for (int i = 0; i < a.size(); i++
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值