- 博客(12)
- 收藏
- 关注
原创 编译原理复习-第五章
LR分析器的基本原理是:将句柄(某个产生式的右部)的识别过程划分为若干状态,分析器根据当前的状态确定是否找到了句柄。如果找到了句柄,则按相应的产生式进行归约,并进人下一个状态;如果未找到句柄,则移进输人符号,也进入下一个状态。移进-归约分析器遇到的典型问题是:根据栈中的内容和下一个输人符号不能确定是移进还是归约,称为移进-归约冲突( shiftV/reduce confict),或不能确定按哪一个产生式进行归约,称为归约-归约冲突(reduce/reduce conflict)。
2025-01-07 20:49:13
653
原创 编译原理复习-第四章
FIRST集和FOLLOW集一起可以完整的描述LL(1)文法的条件:条件(1)(2)(3)共同描述文法不具有回溯问题(没有公共前缀)的条件。非递归的预测分析法会考的地方主要是从之前LL(1)文法的FIRST集和FOLLOW集构建SELECT集,再从SELECT集构建预测分析表,最后根据预测分析表写出预测分析过程。
2025-01-06 22:09:03
682
原创 编译原理复习-第三章
正则表达式所表示的语言称为正则集。可以证明,正则表达式与正则文法是等价的。也就是说,给定任意的正则文法G,存在正则表达式r.使得L(r)=L(G):同样,给定任意的正则表达式r,存在正则文法 G,使得L(G)=L(r)。因此,正则集与正则语言是同义词。给定正则文法G,构造一个正则表达式r,使得L(r)=L(G)。DFA和NFA一个是确定的有穷状态机,一个是不确定的有穷状态机,它们是等价的。
2025-01-06 22:08:30
1004
原创 编译原理复习-第二章
1型文法要求产生式P左部大于等于右部。2型文法在1型文法的基础上要求产生式P左部是非终结符V。3型文法在2型文法的基础上要求产生式右部是终结符的正闭包或者单个非终结符+终结符的正闭包(左线性)终结符的正闭包或者终结符的正闭包+单个非终结符(右线性)3型文法生产式的右部不能同时出现左线性和右线性,否则就不是三型文法。书中对定义中的(5)有专门的解释,定义中的(5)的意义在于避免一颗语法树出现不必要的标记为ε的节点。有时,也称非叶子节点为中间节点,称语法树为分析树(parsetree)
2025-01-03 02:27:26
1148
原创 编译原理复习-第一章
第一章第一节首先介绍了程序设计语言,主要分为机器语言、汇编语言、高级程序语言。为了实现语言之间的转化,有了翻译程序,第二节介绍了许多翻译程序,但本书主要介绍的是编译程序。于是第三节就介绍了编译程序的总体结构-语法分析器、词法分析器、语义分析器、中间代码生成器、代码优化器、目标代码生成器、错误处理器、符号管理器。代码优化、目标代码生成、出错处理、符号表管理不考,第四五节应该也不会考。
2025-01-03 02:25:57
674
原创 nps内网穿透-代理
总的来说,攻击机尝试ssh登录two主机(192.168.232.156),由于属于192.168.232.*网段,proxifier会代理到本机的7788端口。本机的7788端口与one主机(192.168.232.138)建立了socks5隧道,故攻击机通过代理one主机(192.168.232.138)登录two主机(192.168.232.156)
2024-08-05 11:37:52
1254
2
原创 云安全实训练习题WP
-server指定的是api-server的ip地址(env可以看到),token是cat /var/run/secrets/kubernetes.io/serviceaccount/token获得的凭证。由于未授权漏洞,用户名和密码随便输入就行。构造一个恶意pod配置文件,该恶意pod可以将pod宿主机根目录挂载到恶意pod下的mnt目录,从而可以访问到宿主机根目录下的flag。接下来构造恶意pod,该pod能够将k8s-master的根目录挂载到pod的/host文件夹下。
2024-07-20 23:54:34
942
原创 DS单链表_反转链表
在给出代码之前,我们首先定义了两个类:`ListNode`和`LinkList`。`ListNode`类表示单链表的节点,包含一个整型数据成员和一个指向下一个节点的指针。`LinkList`类表示单链表,包含一个头节点指针和链表长度的成员变量。LinkList();return p;
2024-01-04 23:57:40
913
1
原创 Python多线程对RAR文件密码爆破
RAR文件是一种常见的压缩文件格式,经常用于将多个文件打包成一个文件以节省存储空间或方便传输。但是,如果我们忘记了RAR文件的密码,或者需要获取受保护的RAR文件的内容,就需要使用密码爆破技术。本文将介绍如何使用Python编程语言进行RAR文件密码爆破。
2024-01-01 22:47:01
1385
原创 现性代数期末复习报告
矩阵的定义对角阵单位矩阵(单位阵)矩阵的相等矩阵的转置对称阵:n阶方阵A满足A=AT反对称阵:n阶方阵A满足AT=-A分块矩阵:主要是为了方便运算。分块对角阵行阶梯形矩阵:任意一个m*n矩阵总可以经过若干次初等行变换化为行阶梯形矩阵。行最简形矩阵:任意一个m*n矩阵总可以经过若干次初等行变换化为行最简形矩阵。标准形:任意一个m*n矩阵总可以经过若干次初等变换(行变换和列变换)化为行最简形矩阵。
2024-01-01 14:59:09
1332
原创 从暴力匹配深入理解KMP算法
本文重点不在阐述KMP算法,而是在于从暴力匹配的角度来看KMP算法相对与暴力匹配节省了哪些比较匹配过程。因此,是在对KMP算法有一定了解的基础上,希望通过本文加深对KMP算法的理解。不同人对next数组的定义不一样,在本文,next[0]为-1,next[j]表示的是字符子串第j位之前的字符串的最长真前后缀的数值。因此,该串的真前缀和真后缀中最长的相等串为AB,我们称之为该串的“最长的真前后缀”。KMP算法的本质就在于将主串和子串匹配过程中所有的子串的自匹配过程只做一遍。
2023-10-21 23:38:28
256
1
原创 DS队列--组队列(数据结构)
当输入的字符串为“DEQUEUE”时,从数组e中取出排在队列数组最前面的那一组:e[0]组,从e[0]组队列中取出队头元素放到d[m]中(m的初始值为0),并将a[e[0]]弹出队列:d[m ] = a[e[0]].top();之后,判断a[e[0]]是否为空,如果为空,则将e[1]移到e[0],......,直到的e[count - 1]移到e[count - 2](e数组最后一个数的下标是count-1),count--;,并将i组的顺序记录在e[count]中:e[count] = i;
2023-10-12 21:55:36
1026
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人