PL0
2023-05-27 17:14:35 2 举报
AI智能生成
登录查看完整内容
PL0
作者其他创作
大纲/内容
将高级语言翻译成汇编语言或机器语言的程序
程序保存时是按照字符保存ASCII码的
编译程序
从左到右扫描源程序,确定单词类型,将识别的单词转换为token
token:<种编码,属性值>
种编码本质是int类型
词法分析
用尖括号括起来的中文字表示语法构造成分,或称语法单元;而用尖括号括起来的英文字表示一类词法单元。
<>
表示左部的语法单位由右部定义,可读作“定义为”。
::=
表示“或”,即多选项。
|
用花括号括起来的成分可以重复0次到任意多次。
{}
用方括号括起来的成分为任选项,即出现一次或不出现。
[]
EBNF 元符号含义
<程序> ::= <分程序>
<分程序> ::= [<常量说明部分>;][<变量说明部分>;] {<过程说明部分>;}<语句部分>
<常量定义> ::= <标识符>=<无符号整数>
<无符号整数> ::= <数字>{<数字>}
<标识符> ::= <字母>{<字母>|<数字>}
<过程说明部分> ::= <过程首部><分程序>
<过程首部> ::= procedure<标识符>
<语句部分> ::= <语句>|<复合语句>
<复合语句> ::= BEGIN<语句>{;<语句>}END
<语句> ::= <赋值语句>|<条件语句>|<当型循环语句>|<过程调用语句>| <读语句>|<写语句>|<复合语句>|<空语句>
<赋值语句> ::= <标识符>:=<表达式>
<条件> ::= <表达式><关系运算符><表达式>|ODD<表达式>
<表达式> ::= [+|-]<项>{<表达式><加法运算符><项>}
<项> ::= <因子>|<项><乘法运算符><因子>
<因子> ::= <标识符>|<常量>|(<表达式>)
<常量> ::= <无符号整数>
<加法运算符> ::= + | -
<乘法运算符> ::= * | /
<关系运算符> ::= <|>|<|>=|<=|=
<条件语句> ::= if<条件>then<语句>
<过程调用语句> ::= call<标识符>
<当型循环语句> ::= while<条件>do<语句>
<字母> ::= a|b|c···|z
<数字> ::= 0|1|2···|9
语法单位组成
pascal语言的子集,比较简单
顺序:begin...end...
条件:if then else
重复:while do
语句类型
只有整形
声明类型
数据类型
忽略空格,读取一个字符
GetCh()
GetSym()
词法分析函数
测试当前单词符号是否合法
font color=\"#e74f4c\
常量定义处理
变量说明处理
因子处理
项处理
这个[+|-]是为了防止++i和--i作为表达式的情况,所以会先调用判断
表达式处理
条件处理
语句处理
处理判断函数
出错处理,打印出错位置和错误编码
Error(int n)
生成目标代码,并送入目标程序区
登录名字表
查找标识符在名字表中的位置
font color=\"#000000\
列出目标代码清单
ListCode(int CX0)
分程序分析处理过程
通过静态链求出数据区的基地址
对目标代码的解析执行程序
Interpret()
其它函数
创建新的符号集,将参数位置设置为1
SymSetNew
将前后两个符号集合并,确定本次的符号内容
SymSetUnion
查找SYM信号是否在信号集中
系统函数
函数部分
LOAD CONSTANT A
LIT 0 A
EXECUTE OPR A
OPR 0 A
LOD L A
STO L A
CALL PROCEDURE A AT LEVEL L
CAL L A
INCREMET T-REGISTER BY A
INI 0 A
JUMP TO A
JMP 0 A
JUMP CONDITIONAL TO A
JPC 0 A
汇编关键字
NULL
NUL
变量
IDENT
数字
NUMBER
基础关键字
相等
EQL
不相等
NEQ
小于
LSS
小于等于
LEQ
大于
GTR
大于等于
GEQ
CONDITION函数符号关键字
加法
PLUS
减法
MINUS
EXPRESSION函数符号关键字
部分程序关键字
关键字部分
CX:保存记录指令个数,便于输出
保存指令
CODE结构体
参数部分
有三位是1,包括NUMBER、IDENT、LPAREN(左括号)
基本用来判断运算符左边开头是否合法
FACBEGSYS
有五位是1,包括BEGINSYM、CALLSYM、IFSYM、WHILESYM、WRITESYM
STATBEGSYS
各类信号set
数组部分
PL/0语言
关键字
标识符
整数
运算符、界符
忽略注释
单词识别
PL0的扩充与修改
0 条评论
回复 删除
下一页