分程序(cos+ ident number var ident procedure + ident 分程序 语句
const ident = number , ; var ident , ; ; procedure ident ; 分程序 语句 分程序
PL/0语言的EBNF表示 构成EBNF的元素(非终结符,终结符,开始符,规 则) EBNF的元符号: 用左右尖括号括起来的内容为非终结符 读做“定义为 的左部由右部定义 读做“定义为’ 的左部由右部定义 读做‘或’表示右部候选内容 }表示花括号内的内容可重复任意次或限 定次数 []表示方括号内的内容为任选项 ()表示圆括号内的内容优先
PL/0语言的EBNF表示 构成EBNF的元素—(非终结符,终结符,开始符,规 则) EBNF 的元符号: < > 用左右尖括号括起来的内容为非终结符 ∷= 读做‘定义为’ ∷=的左部由右部定义 → 读做‘定义为’ → 的左部由右部定义 | 读做‘或’ 表示右部候选内容 { } 表示花括号内的内容可重复任意次或限 定次数 [ ] 表示方括号内的内容为任选项 ( ) 表示圆括号内的内容优先
例:用EBN描述<整数>的定义: 整数>∷=[+|-]<数字>{数字》} 数字>∷=01234|567|8|9 或 整数>:[+|-]<非零数字>{数字》}0 <非零数字>:=1|23|4|5|6789 数字>∷=0<非零数字
例:用EBNF描述<整数>的定义 : <整数>∷=[+|-]<数字>{<数字>} <数字>∷=0|1|2|3|4|5|6|7|8|9 或 <整数>∷=[+|-]<非零数字>{<数字>}|0 <非零数字>∷=1|2|3|4|5|6|7|8|9 <数字>∷=0|<非零数字>
PL/0语言是 PASCAL语言的子集 同 PASCAL 作用域规则(内层可引用包围它的外层定义的标识符), 上下文约束, 过程可嵌套定义,可递归调用 子集 数据类型,只有整型 数据结构,只有简变和常数 数字最多为14位 标识符的有效长度是10 语句种类 过程无参,最多可嵌套三层
PL/0语言是PASCAL语言的子集 同PASCAL 作用域规则(内层可引用包围它的外层定义的标识符), 上下文约束, 过程可嵌套定义,可递归调用 子集 数据类型,只有整型 数据结构 ,只有简变和常数 数字最多为14位 标识符的有效长度是10 语句种类 过程无参,最多可嵌套三层
目标代码类p-code 目标代码类p-code是一种栈式机的汇编语言。 栈式机系统结构:没有累加器和寄存器,只有存储栈指针 所有运算都在栈顶(零地址机) 指令格式: f f1a 功能码 层次差(标识符引用层减去定义层) 根据不同的指令有所区别
目标代码类p-code 目标代码类p-code是一种栈式机的汇编语言。 栈式机系统结构:没有累加器和寄存器,只有存储栈指针 所有运算都在栈顶(零地址机) 指令格式: f l a f 功能码 l 层次差 (标识符引用层减去定义层) a 根据不同的指令有所区别