pl0笔记
来源:互联网 发布:js 是否数字 编辑:程序博客网 时间:2024/06/03 03:32
pl0笔记
第一部分 pl0语言及其编译器
- pl0语言介绍
pl0设计语言是一个比较简单的语言,它以赋值语句为基础,构造概念有顺序,条件,循环三种。pl0有子程序的概念,包括过程定义(可以嵌套)与调用且有局部变量说明。pl0唯一的数据类型是整型,可以用来说明该类型的变量和常量。当然pl0也具有通常的算术与逻辑运算。具体的pl0语法图如下所示。 - pl0语言编译器
pl0编译器的基本工作流程如下图所示:
!compiler process- 语法分析完成以下工作
1.跳过分隔符,即空格,回车,制表符
2.识别保留字,如begin,end,if ,while
等
3.识别非保留字的 一般标志符,将次标志符赋值给全局量id
,而全局量sym
赋值为sym_identifier
4.识别数字序列,当前值赋值给全局量num
,sym
被赋值为sym_number
5.是被:=,<=,>=
等特殊符号,全局量sym
被赋值为sym_becomes,sym_leq,sym_gtr
等。
相关函数有getsym(),getch()
,其中getch()
为获取单个字符函数,除此之外,它还完成:- 识别且跳过行结束符
- 将输入源文件复写到输出文件
- 产生一份程序列表,输出相应行号或者指令计数器的值
注意getch()识别一个字符后,文件指针指向下一个,而getc()不会。
- 语法分析
- 语法分析完成以下工作
pl0的指令集
- pl0的指令集包含7种指令,分别是:
(1) LIT 将常数压栈
(2) LOD 将变量值压栈
(3) STO 将栈顶的值赋予某变量
(4) CAL 过程调用
(5) INT 在数据栈中分配存储空间
(6) JMP,JPC 用于if,while语句的条件或者无条件控制转移指令
(7) OPR 算术逻辑指令 指令格式
! !format
F,L,A的含义见下表
!ins *
阅读全文
0 0
- pl0笔记
- PL0程序设计语言
- PL0编译器扩展
- PL0编译器TurboPascal版再现
- 编译原理:PL0词法分析
- PL0编译语义分析 递归
- PL0源码分析之占位
- PL0语法分析程序(表达式部分)
- PL0文法编译器C语言源代码
- XCode Codesnipet pl0,pl1,pl2,pl3,pl4
- PL0编译器分析与语法扩展
- pl0语言文法的EBNF表示
- PL0扩展(数组,if-else,注释)
- 用C#实现的简单PL0 to C 编译器
- PL0 表达式的计算(递归子程序法)
- pl0源码(可在delphi7中运行)
- 编译原理pl/0 c语言版 pl0.h文件
- 用PL0语言求Fibonacci数列前m个中偶数位的数
- xss攻击解决方案
- python3 datetime() 模块之 timedelta() 类
- 在Mac、Linux 终端显示 Git 当前所在分支
- apache kafka性能测试命令使用和构建kafka-perf
- checkbox复选按钮取值
- pl0笔记
- Java
- 代理模式-静态代理Demo
- 高数 01.05极限运算法则
- python3 + fiddler爬取微信公众号消息记录
- python3 datetime() 模块之 date、time 类
- Mysql处理海量数据时的一些优化查询速度方法
- httpie 命令行工具使用记录
- jQuery 获取当前节点的html包含当前节点的方法