编译原理 C++ 词法分析器

本文介绍如何设计一个C++编写的词法分析器,根据编译原理,识别包括关键字、常数、运算符和界符在内的各种单词符号。通过示例代码展示词法分析器的具体实现,例如处理'while (i>=j) i–;'这样的语句,并输出相应的单词符号。
摘要由CSDN通过智能技术生成

词法分析器
C++

实验一 词法分析器
参考课本 p44-3.2.4,设计词法分析器,识别下列单词符号:
关键字:while if else in标识符
常数:整常数
运算符:+ - * / % = > < <= >= == != && || 界符:( ) ; [ ] { }
单词符号的表示形式: (单词种别,单词符号的属性值)
单词种别使用整数编码,如:
输入:
while (i>=j) i–;
输出单词符号:
< 20, - >
< 81, - >
< 111, i >
< 48, - >
< 111, j >
< 82, - >
< 111, i >
< 57, - >
< 84, - >
!在这里插入图片描述在这里插入图片描述
样例***********************************
例子
在这里插入图片描述

具体代码

按老师要求修改好的,其中“1.txt”需要和Cpp文件在同一路径

// An highlighted block
// by  xyw
#include <bits/stdc++.h>
using namespace std;
string str;
string s;
map<string,int> mp;
int flag;
struct xx
{
   
    int id;
    string t;
}pos,a,b;
int tmp=0;
int ttp;
int tt=0;
void init()
{
   
    mp["int"] = 5;
    mp["else"] = 15;
    mp["if"] = 17;
    mp["while"] = 20;
    mp["+"] = 41;
    mp["-"] = 42;
    mp["*"] = 43;
    mp["/"] = 44;
    mp["%"] = 45;
    mp[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值