c++实现编译原理词法分析实验(含代码)

该博客介绍了使用C++进行编译原理中的词法分析实验,目的是理解词法分析原理,识别保留字、标识符、常数、运算符和分隔符。文章提供了程序思路,包括定义、初始化、取单词等步骤,并分享了代码实现。在运行过程中遇到的fopen安全警告问题,通过修改解决了问题。
摘要由CSDN通过智能技术生成

c++实现编译原理词法分析实验(含代码)

一、实验目的:
通过设计编制调试一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。
编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示)
二、程序思路(仅供参考):
这里以开始定义的C语言子集的源程序作为词法分析程序的输入数据。在词法分析中,自文件头开始扫描源程序字符,一旦发现符合“单词”定义的源程序字符串时,将它翻译成固定长度的单词内部表示,并查填适当的信息表。经过词法分析后,源程序字符串(源程序的外部表示)被翻译成具有等长信息的单词串(源程序的内部表示),并产生两个表格:常数表和标识符表,它们分别包含了源程序中的所有常数和所有标识符。
0.定义部分:定义常量、变量、数据结构。
1.初始化:从文件将源程序全部输入到字符缓冲区中。
2.取单词前:去掉多余空白。
3.取单词后:去掉多余空白(可选,看着办)。
4.取单词:利用实验一的成果读出单词的每一个字符,组成单词,分析类型。(关键是如何判断取单词结束?取到的单词是什么类型的单词?)
5.显示结果。

以上都是废话,直接看代码吧

代码

#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include<string>
#define M 20 
using namespace std;
string keyword[9] = {
    "main","if","int","for","while","do","return","break","continue" };//关键字=1
  //标识符值=2
  //常数值=3
char arithmetic[4] = {
    '+','-','*','/' }; //算术运算符=4
char relation[6] = {
    '=','>','<','>=','<=','!=' };//关系运算符=4
char border[6] = {
    ';',',','{','}','(',')' };    //分隔符=5

/**判断是否为关键字**/
bool IsKeyword(string word) {
   
	for (int i = 0; i<9; i
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值