程序—分程序 内的文字表示非终结符 或()内的文字或符号表示终结符
程序 分程序 . 内的文字表示非终结符 或 内的文字或符号表示终结符
分程序(cos+ ident number var ident procedure + ident 分程序 语句
const ident = number , ; var ident , ; ; procedure ident ; 分程序 语句 分程序
PL/0语言文法的EBN表示 EBNF引入的符号(元符号): <>用左右尖括号括起来的语法成分为非终结符 =(→)“定义为’∷=(→)的左部由右部定义 或 }表示花括号内的语法成分可重复任意次或限 定次数 []表示方括号内的语法成分为任选项 ()表示圆括号内的成分优先
PL/0语言文法的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 语句种类 过程最多可嵌套三层