在Jflex如何比较好的识别字符
在Jflex如何比较好的识别字符串前言本文专注于解决在梅努斯国际工程学院中的CS310FZ编译原理这节课的某一次实验在Lab4中,我们被要求写flex文件以识别:字符串文字——由双引号括起来的字符序列。您可以假设包含的字符串不包含任何引号或其他可转义字符因此本文将基于这个目标进行任务的完成————如果您是学习研究词法编辑器而看到了本文,建议阅读Jflex手册的第3-4章,作者的思路十分清晰
储备上官方手册:https://www.jflex.de/manual.html#content如果您想比较好的明白这篇文章的内容,您可以先完整阅读以下部分:1.A simple Example: How to work with JFlex2.Lexical Specifications
如果您懒得阅读,请直接看下面的部分:
完成该任务的知识flex文件的组成JFlex 的词法规范文件由三个部分组成,由以 %% 开头的单行分隔,简而言之就是这样:
12345678A.用户代码部分:这部分会写在生成的Java文件的类的最开头,一般而言会写一些ipmort在这 %%B.设置和声明:可 ...
MIEC学生新手手册
目录本文包括以下软件/网站的使用:0.科学上网1.Moodle2.Teams3.浏览器与插件推荐4.其它
Last Update 2022.08.15
0.科学上网我们要用的网站裸连的话可能遇到网速感人的情况,有的时候老师也会推荐一些油管上的视频,这个时候一门科学上网的技术就是必要的了
注:代理并不一定会加速teams,因为微软感人的服务器。但是moodle的速度是实打实的会加快
1.MoodleMoodle是你对于学院课程学习的主场,在这里你包括但不仅限于可以:1.得到老师上课的PPT2.完成实验的提交3.完成一些在线任务4.查看你的分数/绩点5.查看历年卷
登陆登录网站为: https://moodle.maynoothuniversity.ie/login/index.php在得到对应的MU账号之后,通过这里登录
登录之后会来到DashBoard界面,主要有用的部分见下图(没框起来的就是你很少用到的功能)
下面我来一步步说说
课程点击对应的课程就可以进入对应的部分,我这里以我的算法课为例
随后我们会进入这个界面,有用的地方就是各个sec ...
公告以及介绍
公告本站分类主要有以下部分:MIEC生存手册:我本着作为某学院前辈的心理留下的一点应试笔记,一般一学期一更,如果你不是MIEC的或者不想以应试为目的的,无视这一块算法与数据结构:包含入门知识,题解,经验总结等等,属于比较经常更新的一块Unity:Unity部分的知识,看组内工作需要(比如催我写blog了)更新语言学习:学习一门新语言的笔记,并非从零开始学XX系列,如果对于一些疑难杂症的解决有帮助,很荣幸。一般看我啥时候学了某个语言更新各种知识杂项:视情况更新,比如我在2022的寒假就在整操作系统和AndroidStudio。属于看我突然对某个方面有兴趣了就会更新。杂谈:聊天吹水写心得的,看有没有时间摸鱼更新
Hello!这里是RetenQ,一个初入CSSE一年左右的新人这是除开Hexo以及各种初始化博客之后的,第一篇传到这个网站的博客现在是2022年01月13日的晚上,确切说是凌晨,很冷,但是我本着能不鸽就不鸽自己的精神在整它大致在一年前的大一就准备做这个东西,奈何既不会html css js,也不了解计网相关,也没去尝试hexo+githubIO于是是一摸再摸,一拖再拖,然后就是现在 ...
MissingSemester(2)VIM基础操作
MissingSemester(2)VIM基础操作
Vim 是一个_多模态_编辑 器:它对于插入文字和操纵文字有不同的模式。Vim 是可编程的(可以使用 Vimscript 或者像 Python 一样的其他程序语言),Vim 的接口本身也是一个程序语言:键入操作(以及其助记名) 是命令,这些命令也是可组合的。Vim 避免了使用鼠标,因为那样太慢了;Vim 甚至避免用 上下左右键
模式与简介vim分为五个常用的操作模式:正常模式,插入模式。替换模式,可视化模式,命令模式。正常模式是最初的模式,也是其它模式下按下ESC返回的模式
在不同的操作模式下,键盘敲击的含义也不同
你可以按下<ESC>(退出键) 从任何其他模式返回正常模式。 在正常模式,键入i进入插入模式,R进入替换模式,v进入可视(一般)模式,V进入可视(行)模式,<C-v> (Ctrl-V, 有时也写作 ^V)进入可视(块)模式,: 进入命令模式
概念:缓存、标签页、窗口Vim 会维护一系列打开的文件,称为“缓存”。一个 Vim 会话包含一系列标签页,每个标签页包含 一系列窗口 ...
MissingSemester(3)正则表达式与数据整理
MissingSemester(3)正则表达式与数据整理有时候我们需要利用搜索模式、正则表达式等结合来筛选数据吗,本篇主要概述了如何使用正则表达式
正则表达式常用工具正则表达式在线调试工具: https://regex101.com/Github-LearnREGEX: https://github.com/cdoco/learn-regex-zh简短的Regex教程与练习: https://regexone.com/
常见模式.除换行符之外的”任意单个字符”*匹配前面字符零次或多次+匹配前面字符一次或多次?作为后缀使用,将*和+的模式从贪婪模式(默认)改完非贪婪模式
[abc]匹配 a, b 和 c 中的任意一个(RX1|RX2)任何能够匹配RX1或RX2的结果^行首锚点$行尾锚点
捕获组与使用在正则表达式中,我们可以使用圆括号来得到一个“捕获组capture groups”被圆括号内的正则表达式匹配到的文本,都会被存入一系列以编号区分的捕获组中使用/x来使用捕获组得到的内容,其中x是从1开始的数字,/1就是第一个捕获组的内容
小结:正则表达式的核心还是在于多写多 ...
MissingSemester(1):初识Shell以及Bash
MissingSemester(1):初识Shell以及Bash概述:Shell是什么如今的计算机有着多种多样的交互接口让我们可以进行指令的的输入,但是它们也从根本上限制了您的操作方式——你不能点击一个不存在的按钮或者是用语音输入一个还没有被录入的指令。 为了充分利用计算机的能力,我们不得不回到最根本的方式,使用文字接口:Shell
Shell的核心功能是一样的:它允许你执行程序,输入并获取某种半结构化的输出
接下来我们会使用Bourne Again SHell,简称bash.以Linux为例,我们按下ctrl+alt+T来打开它
初步使用Shellshell的接口会告诉你主机名和当前的工作目录(位置)另外,如果当前的输入框是以$开头,则是表面您现在的身份还不是root用户
在此时,我们可以输入命令并被shell解析,比如:
一些命令与操作12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment
1.1 树:AVL的实现与分析,高级树简介
树AVLAVL(Adelson-Velsky and Landis)树是一种自平衡二叉搜索树对于树中的每一个节点,左、右子树的高度最多只能相差1
简介搜索树上的大多数原始操作在O(h)时间内在高度为h树上运行,树的高度在一棵AVL树中,是O(lgN)
一棵AVL树是左右子树高度最大相差1的树(其中空树的高度定义为-1)在高度为h的AVL树中,最少节点数S(h) = S(h-1) + S(h-2) + 1 ;h=0,S(h)=1;h=1,S(h)=2
AVL的平衡,旋转AVL是特殊化的二叉树,想要保证AVL的平衡,我们可以用到一种称为平衡的做法。是否进行平衡的问题由树之间的高度决定
AVL的基础定义与高度计算这里先给出AVL的基本定义以及高度计算
12345678910111213141516171819//%AVL定义private static class AvlNode<AnyType>{ AnyType elemenet ; AvlNode<AnyType> l ...
1.0 树:树的简介,二叉树的实现
树树/自由树(tree/free tree)是一个连通的、非循环的无向图
前文初步阐释了树,以及对于二叉树、AVL树的实现与分析。最后简单介绍了红黑树、伸展树、B/B+树,如果有需要/有机会的话补充这三者的实现与分析(好复杂)
树的介绍树有多种方式定义,其中一种自然的方式是采用递归一棵树是一些点的集合,这个集合也能是空集;若不为空集,树就由称作跟root的节点r,以及0到N个的非空(子)树组成,子树的每一棵的跟都有来自r的一条有向边连接在递归定义中,我们认为“一棵树是N个节点和N-1跳边的集合,其中一个节点为根root”
树与节点根节点:最初的节点,被称为根或根节点 Root/Root Node叶/外节点:没有子节点的的点 Leaf/External Node内节点:非叶节点的其他节点 Internal Node
深度Depth:从根到节点的简单路径的长度高度Height:一棵树的最大深度,对于任意节点ni,ni的深度到一片树叶的最远路径长Degree 根节点的子节点数目
节点祖先 Ancest ...
2.1.0 排序算法:快速排序的实现
排序算法快速排序快速排序算法也是一种分治递归算法,它在 𝑵 值的输入数组上的最坏情况运行时间为 𝜽(𝑵^𝟐)它的平均运行时间为𝜽(𝑵𝐥𝐠𝑵),但它的平均效率非常高,因为𝜃 𝑁lg𝑁 符号中的常数因子非常小(高度优化的内循环)而且它的最坏情况在简单的优化后可以很可能的避免它具有就地排序的优点,即在不使用辅助数据结构的情况下转换输入(比如归并排序就需要一个辅助数组,否则操作会负责/开销会增大)
在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。
快速排序的最坏运行情况是 O(n²),比如说顺序数列的快排。但它的平摊期望时间是 O(nlogn),且 O(nlogn) 记号中隐含的常数因子很小,比复杂度稳定等于 O(nlogn) 的归并排序要小很多。所以,对绝大多数顺序性较弱的随机数列而言,快速排序总是优于归并排序。
该算法的关 ...