词法分析

news/2024/11/13 10:41:31/文章来源:https://www.cnblogs.com/zhljy/p/18538089

词法分析

代码实现

#include<bits/stdc++.h>
#define int long long
#define PII pair<int , int>
using namespace std;
const int N = 1e6 + 10;
int n , k = 1 , x1 = 0 , x0 = 0;
int mid = 1e9 + 7;
map<string , int>mp;void matt(){   string s;while(getline(cin , s)){stringstream t(s);string ss;while (t >> ss){n = ss.size();int i = 0;string ssr = "";// cout << ss << '\n';while (i < n){if(i != n - 1 && ss[i] == '*' && ss[i + 1] == '/') {x0 = 0 ;i += 2;continue;}if(x0) {i ++ ; continue ;}if(isalpha(ss[i]) || ss[i] == '_' || isdigit(ss[i])){ssr += ss[i];}else{if(i != n - 1 && ss[i] == '.' && isdigit(ss[i - 1]) && isdigit(ss[i + 1])) {ssr += '.';i++;continue;}if(ssr != ""){if(!mp[ssr]){mp[ssr] = k++;}cout << ssr << '\n';ssr = "";}if(i != n - 1 && ss[i] == '/' && ss[i + 1] == '/') {x1 = 1 ;break;}else if(i != n - 1 && ss[i] == '/' && ss[i + 1] == '*') {x0 = 1 ;i++;continue;}else if(i != n - 1 && ss[i] == '+' && ss[i + 1] == '+'){cout << "++\n";if(!mp["++"]){mp["++"] = k++;}i++;}else if(i != n - 1 && ss[i] == '-' && ss[i + 1] == '-'){cout << "--\n";if(!mp["--"]){mp["--"] = k++;}i++;}else if(i != n - 1 && ss[i] == '=' && ss[i + 1] == '='){cout << "==\n";if(!mp["=="]){mp["=="] = k++;}i++;}else if(i != n - 1 && ss[i] == '!' && ss[i + 1] == '='){cout << "!=\n";if(!mp["!="]){mp["!="] = k++;}i++;}else if(i != n - 1 && ss[i] == '+' && ss[i + 1] == '='){cout << "+=\n";if(!mp["+="]){mp["+="] = k++;}i++;}else if(i != n - 1 && ss[i] == '-' && ss[i + 1] == '='){cout << "-=\n";if(!mp["-="]){mp["-="] = k++;}i++;}else if(i != n - 1 && ss[i] == '*' && ss[i + 1] == '='){cout << "*=\n";if(!mp["*="]){mp["*="] = k++;}i++;}else if(i != n - 1 && ss[i] == '/' && ss[i + 1] == '='){cout << "/=\n";if(!mp["/="]){mp["/="] = k++;}i++;}else if(i != n - 1 && ss[i] == '&' && ss[i + 1] == '&'){cout << "&&\n";if(!mp["&&"]){mp["&&"] = k++;}i++;}else if(i != n - 1 && ss[i] == '|' && ss[i + 1] == '|'){cout << "||\n";if(!mp["||"]){mp["||"] = k++;}i++;}else if(i != n - 1 && ss[i] == '<' && ss[i + 1] == '<'){cout << "<<\n";if(!mp["<<"]){mp["<<"] = k++;}i++;}else if(i != n - 1 && ss[i] == '>' && ss[i + 1] == '>'){cout << ">>\n";if(!mp[">>"]){mp[">>"] = k++;}i++;}else if(i != n - 1 && ss[i] == '\\' && ss[i + 1] == 'n'){cout << "\\n" << '\n';if(!mp["\\n"]){mp["\\n"] = k++;}i++;}else if(i != n - 1 && ss[i] == '%' && ss[i + 1] == 'd'){cout << "%d\n";if(!mp["%d"]){mp["%d"] = k++;}i++;}else if(i != n - 1 && ss[i] == '%' && ss[i + 1] == 'f'){cout << "%f\n";if(!mp["%f"]){mp["%f"] = k++;}i++;}else if(i != n - 1 && ss[i] == '%' && ss[i + 1] == 'c'){cout << "%c\n";if(!mp["%c"]){mp["%c"] = k++;}i++;}else {cout << ss[i] << '\n';ssr += ss[i];if(!mp[ssr]){mp[ssr] = k++;}ssr = "";}}i++;}if(ssr != "") {cout << ssr << '\n';if(!mp[ssr]) mp[ssr] = k++;}if(x1) {x1 = 0; break;}}}cout << '\n' << '\n';for(auto x : mp){cout << x.first << ' ' << x.second << '\n';}
}signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int T = 1;// cin >> T;while (T--){matt();}return 0;
}

输入内容

int main(){// ios::sync_with_stdio(false);// cin.tie(0);// cout.tie(0);int T = 1;cin >> T;while (T--){int n , m;cin >> n;scanf("%d" , &m);int ans = 0;double x = 1.2;while (n){if(n <= 2) n = 0 , ans++;else if( n % 2 == 0) n /= 2 , ans++;else n-- , ans++;}cout << ans << '\n';}return 0;
}

输出内容

int
main
(
)
{
int
T
=
1
;
cin
>>
T
;
while
(
T
--
)
{
int
n
,
m
;
cin
>>
n
;
scanf
(
"
%d
"
,
&
m
)
;
int
ans
=
0
;
double
x
=
1.2
;
while
(
n
)
{
if
(
n
<
=
2
)
n
=
0
,
ans
++
;
else
if
(
n
%
2
==
0
)
n
/=
2
,
ans
++
;
else
n
--
,
ans
++
;
}
cout
<<
ans
<<
'
\n
'
;
}
return
0
;
}" 18
% 31
%d 19
& 20
' 37
( 3
) 4
++ 29
, 15
-- 13
/= 33
0 22
1 8
1.2 25
2 28
; 9
< 27
<< 36
= 7
== 32
>> 11
T 6
\n 38
ans 21
cin 10
cout 35
double 23
else 30
if 26
int 1
m 16
main 2
n 14
return 39
scanf 17
while 12
x 24
{ 5
} 34

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/830669.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云云服务器数据迁移实战方案

前言 我在三年前购买的腾讯云服务器今年过期咯, 今年的腾讯云双十一活动也是给力优惠攻略极速观看: 刻不容缓腾讯云双十一活动羊毛攻略!!!-腾讯云开发者社区-腾讯云 极速通道购买: 腾讯云11.11上云拼团Go 经过上面的攻略我购买了一个 2h4g 和 4h8g 的云服务器, 我将 Mysql 、Re…

20222418 2024-2025-1 《网络与系统攻防技术》实验四实验报告

1.实验内容 一、恶意代码文件类型标识、脱壳与字符串提取 对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下: (1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具; (2)使用…

Windows 10 配置为 NTP 时间服务器的操作步骤及解析

之前有过将 Windows 10 配置为 NTP 时间服务器的经历,但是没有做文字记录。 这次又需要做一样的配置,对网上的资料和配置细节不太确定,所以设置完后写了本篇记录。 操作步骤设置服务器类型为 NTP;修改注册表键值 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32…

20222302 2024-2025-1 《网络与系统攻防技术》实验四实验报告

1.实验内容 1.1恶意代码文件类型标识、脱壳与字符串提取 对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下: (1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具; (2)使用超…

2024-2025-1 20241415 《计算机基础与程序设计》第七周学习总结

2024-2025-1 20241415 《计算机基础与程序设计》第七周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第七周作业这个作业的目标 数组与链表、基于数组和基于链表实现数据结构、无序表与有序表、…

MAC下使用Clion软件进行STM32的HAL库的开发

1、准备的软件 (1)clion: 链接:https://www.jetbrains.com.cn/clion/ 破解:方法可在某宝上去找。 (2)STM32CubeMX与ST_Link: 链接:https://www.st.com.cn/content/st_com/zh/stm32cubemx.html 破解:免费使用 mac电脑在安装的时候会出现上面的界面,依次安装即可。 (3)macOS…

2024-2025-1 20241314 《计算机基础与程序设计》第七周学习总结

2024-2025-1 20241314 《计算机基础与程序设计》第七周学习总结 作业信息这个作业属于哪个课程 <班级的链接>2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第七周作业这个作业的目标 数组与链表 基于数组和基于链表实现数据结构…

二进制和格雷码转换

二进制和格雷码转换 二进制转为格雷码//根据二进制转换成格雷码的法则,可以得到以下的代码: static unsigned int DecimaltoGray(unsigned int x) {return x^(x>>1); }//以上代码实现了unsigned int型数据到格雷码的转换,最高可转换32位自然二进制码,超出32位将溢出。…

在鸿蒙NEXT中开发一个2048小游戏

本项目是基于api12开发的2048游戏,游戏的逻辑是当用户向某个方向滑动时,将该方向相邻且相等的数字相加,同时在空白区域的随机位置生成一个随机数字。游戏中的数字越大,分数越高。首先,游戏的界面布局分别采用两个网格组件Grid来实现,难点在于上方的菜单栏是不均等的三种尺…

nginx 整体架构

Nginx 是什么 Nginx 是一款 C 语言编写高性能 Web 服务器,反向代理服务器。占用内存少、并发能力强 使用场景 nginx主要有以下 4 个使用场景作为 Http 服务器,可以提供静态网页和静态资源的访问 HTTP代理缓存,缓存服务端请求数据 作为反向代理服务器,将请求代理转发 作为负…

[CISCN2019 华北赛区 Day2 Web1]Hack World 1

[CISCN2019 华北赛区 Day2 Web1]Hack World 1 打开实例发现是个POST注入框盲猜SQL注入,万能密码检测无果,而且经过测试存在大量sql关键字过滤尝试使用(),出现了bool(false),确定这是一道布尔注入题and被禁用,决定采用异或^注入 构建payload脚本梭哈:成功获得flag:flag{a2…

2024 AH CSP-S 迷惑行为大赏

洛谷专栏阅读:https://www.luogu.com.cn/article/0atx674s 一、概述 观前提示:本届CSP-S安徽省整活相较于其他省份不是那么“群英荟萃”,观看前请不要小零食(?) 本届CSP-S安徽共有1013人参赛,其中有效准考证号源文件夹共有1006个,7人因为种种原因最终没有留下任何参赛痕…