- 博客(13)
- 资源 (4)
- 收藏
- 关注
原创 语法分析_自动
语法分析_自动完成语法检测并生成AST介绍&使用说明概述:本次实验在已有基础上,修改了 .l 文件来完成文件的读取,参照 SysY 语言的语法规则并利用Flex-Bison工具链自动完成对SysY语言的语法检测,且生成AST打印在终端。项目链接:https://gitee.com/Brett-Tseng/Syntax-Analyse-Bison主要文件介绍:ast.c & ast.h:主要包含树结构的定义、节点创建函数、树输出函数等;flex 的输入文件 lrlex.l: 主
2021-11-30 11:37:19 1060
原创 语法分析_手动
语法分析_语法检测及AST生成介绍本次实验在词法分析的基础上,修改了 .l 文件来完成文件的读取,参照 SysY 语言的语法规则来编写了递归下降程序rdcheck.c来对测试用例的语法进行分析,并在此基础上完成了rdparser.c来生成语法树。项目链接:https://gitee.com/Brett-Tseng/Syntax-Analyse使用说明rdcheck.c 文件为不生成AST的语法分析器;rdparser.c 文件为生成AST的语法分析器;expr.txt 为测试用例;编译 r
2021-11-30 11:35:32 410
原创 SysY语言(C子集)简单词法分析
词法分析_实现C语言简单词法分析介绍编写.l文件并利用flex自动生成词法分析器;编写.c文件直接实现词法分析器。项目链接:https://gitee.com/Brett-Tseng/Lexical_Analysis使用说明01~06均为测试用例auto_lex.l为编写的正则,使用时需要将其拖拽到win_flex.exe上,会生成一个lex.yy.c,利用如下语句将其编译:gcc -o scan lex.yy.c生成的scan可以直接使用,例如,如果想测试01用例,则使用如下语
2021-11-30 11:33:42 3083
原创 ucos-ii复习
uCOS-II基础知识点归纳TCB内容ucosii.h中,对TCB定义如下 (截取重要的):typedef struct os_tcb { OS_STK *OSTCBStkPtr; // 堆栈栈顶指针 ... struct os_tcb *OSTCBNext; // 指向下一个TCB的指针 struct os_tcb *OSTCBPrev; // 指向上一个TCB的指针 ... INT16U OSTCBDl
2021-05-19 11:36:26 314 2
原创 PostgreSQL实操
PostgreSQL代码用法——重点为用实例来演示各个代码的作用,并非实例本身!!创建数据库CREATE DATABASE MyDB;创建表以作者表为例:CREATE TABLE Author( AuthorID Char(18) NOT NULL, AuthorName Varchar(30) NOT NULL, AuthorMail Varchar(30) NULL, CONSTRAINT AUTHOR_PK PRIMARY KEY(AuthorID));创建外键假设有B
2021-05-18 09:38:52 258 2
原创 可加载内核模块
CentOS实现Linux中的可加载的内核模块老师ppt上给出一道编程题,要求实现Linux中的可加载的内核模块,且需要至少包含一内核线程。在网络上查询很多资料以后整理归纳了一套适用于CentOS的流程 (其他版本的Linux可能存在命令行不一样,或需要下载某些文件,而CentOS几乎可以直接使用),按照此流程可以顺利将代码插入内核运行并查看,希望能够帮到各位读者。具体要求利用如下的系统调用,在Linux系统中实现一个可加载的内核模块,要求里面至少包含一个内核线程。函数作用kth
2021-04-18 20:03:42 553 1
原创 管道通信
OS实验-管道通信管道通信相关概念 所谓“管道”,是指用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,又名pipe文件。其中,向管道(共享文件)提供输入的发送进程(即写进程), 以字符流形式将大量的数据送入管道;而接受管道输出的接收进程(即读进程),则从管道中接收(读)数据。由于发送进程和接收进程是利用管道进行通信的,故又称为管道通信。 管道通信首创于UNIX系统,由于它能有效地传送大量数据,因而又被引入到许多其它操作系统中。为实现管道通信,需要管道机
2021-04-13 11:10:43 1912 1
原创 浅谈Cortex-m4上下文切换
浅谈Cortex-M4 的上下文切换基础知识–Cortex-M4的寄存器 类似与ARM9的寄存器,Cortex-M3/M4也拥有R0-R15这些通用寄存器(其中M4比M3多了一个浮点单元FPU,此处不展开讲解);其中,R13为堆栈指针,在CM3/CM4处理器内核中共有两个堆栈,因此便有两个堆栈指针(MSP & PSP)——对比ARM9系列的7种工作模式来看。MSP为主堆栈指针,一般在Handler模式下使用,由OS内核、异常服务程序以及需要特权访问的应用程序代码来使用; 而PSP主
2021-04-07 21:07:50 2463
原创 消费者/生产者问题
OS实验-消费者/生产者问题(含代码实现)问题描述 有一群生产者进程(线程)在生产产品,并将这些产品提供给消费者进程(线程)去消费。为使生产者进程(线程)与消费者进程(线程)能并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池:生产者进程(线程)将它所生产的产品放入一个缓冲区中;消费者进程(线程)可从一个缓冲区中取走产品去消费。 它们之间必须保持同步原则:不允许消费者进程(线程)到一个空缓冲区去取产品;也不允许生产者进程(线程)向一个已装满产品且尚未被取走的缓冲区中投
2021-04-06 18:06:35 515 7
原创 哲学家就餐问题
OS实验-哲学家就餐问题(含代码实现)问题描述五个哲学家共有五只筷子,平时,一个哲学家进行思考,饥饿时便试图取其左右最靠近它的筷子,只有他拿到两只筷子时才能进餐。进餐毕,放下筷子继续思考。吃饭程序是:先取左边筷子,再取右边筷子,再吃饭,再放筷子。实现方式——最多只允许四个“哲学家”同时进入临界区。 因为如果最多四个哲学家进入临界区,则一定有人可以吃饭,以此来解决死锁的问题。 在代码实现时,以循环队列的方式为每个筷子(需要互斥访问)设一把锁(信号量,初值为1)—
2021-03-31 19:12:29 770 6
原创 C语言基础学习
C语言基础用法——基本语句以下为大一上期进校时C语言课程的程序,存在部分程序编写不合理的地方,还劳烦各位读者指正。程序主要涉及到 if-else / while / for / switch 等基础语句的用法 (以代码的形式体现):/* if-else语句的具体用法 */#include<stdio.h>int main(){ int iAge; printf("How old are you?"); scanf("%d",&iAge); i
2021-03-31 18:22:52 114 1
原创 Typora的一些简单用法
User Manual (Grammar) of TyporaI. Title“#” + " " + Title = First level title;“##” + " " + Title = Second level title;…There are at most six levels of title.(Ctrl + 1 is also avaliable)II. Typeface" * * " + typeface +" * * "(There is no s
2021-03-31 17:25:15 161
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人