扩充PL/0语言语法的EBNF描述

<程序> ::= <分程序>.
<分程序> ::= [<常量说明部分>] [<变量说明部分>] [<过程说明部分>] <语句>
<常量说明部分> ::= const <常量定义> { , <常量定义> };
<常量定义> ::= 	<标识符> = <无符号整数>
<无符号整数> ::= <数字>{<数字>}
<变量说明部分> ::= var <变量声明> { , <变量声明> } ;
<变量声明> ::= <标识符> | <标识符>(<数组界>:<数组界>)
<数组界> ::= <标识符> | <无符号整数>
<标识符> ::= <字母>{<字母>|<数字>}
<过程说明部分> ::= <过程首部> <分程序> {; <过程说明部分> }; 
<过程首部> ::= procedure <标识符>
<语句> ::= <赋值语句> | <复合语句> | <条件语句> | <当型循环语句> | <重复语句> | <过程调用语句> | <读语句> | <写语句>
<赋值语句> ::= <变量引用>:=<表达式>
<变量引用> ::= <标识符> | <标识符>‘(‘<表达式> ‘)’
<复合语句> ::= begin <语句>{;<语句>}end
<条件语句> ::= if <条件> then <语句> [else <语句>]
<条件> ::= <表达式><关系运算符><表达式>|odd<表达式>
<表达式> ::= [+|-]<项>{<加法运算符><项>} 
<项> ::= <因子>{ <乘法运算符><因子> } 
<因子> ::= <变量引用> | <无符号整数> | ‘(‘<表达式>’)’
<加法运算符> ::= + | -
<乘法运算符> ::= * | /
<关系运算符> ::= = | # | < | <= | > | >=
<当型循环语句> ::= while <条件> do <语句>
<过程调用语句> ::= call <标识符>[‘(’<传值参数> {,<传值参数> }‘)’]
<传值参数> ::= <表达式>
<读语句> ::= read ‘(’<变量引用> { , <变量引用> }‘)’
<写语句> ::= write‘(’<表达式> {, <表达式> }‘)’
<字母> ::= a|b|...|X|Y|Z
<数字> ::= 0|1|...|8|9

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是PL/0语言EBNF描述: ``` <程序> ::= [<常量说明部分>][<变量说明部分>][<过程说明部分>]<语句> <常量说明部分> ::= const<常量定义>{,<常量定义>}; <常量定义> ::= <标识符>=<无符号整数> <无符号整数> ::= <数字>{<数字>} <变量说明部分> ::= var<标识符>{,<标识符>}; <标识符> ::= <字母>{<字母>|<数字>} <过程说明部分> ::= {<过程首部><分程序>;} <过程首部> ::= procedure<标识符>; <语句> ::= <赋值语句>|<条件语句>|<当型循环语句>|<过程调用语句>|<读语句>|<写语句>|<复合语句>|<重复语句>|<空> <赋值语句> ::= <标识符>:=<表达式> <条件> ::= <表达式><关系运算符><表达式> <关系运算符> ::= =|<>|<|<=|>|>= <条件语句> ::= if<条件>then<语句>[else<语句>] <当型循环语句> ::= while<条件>do<语句> <过程调用语句> ::= call<标识符> <读语句> ::= read'('<标识符>{,<标识符>}')' <写语句> ::= write'('<表达式>{,<表达式>}')' <复合语句> ::= begin<语句>{;<语句>}end <重复语句> ::= repeat<语句>{;<语句>}until<条件> <表达式> ::= [+|-]<项>{<加法运算符><项>} <加法运算符> ::= +|- <项> ::= <因子>{<乘法运算符><因子>} <乘法运算符> ::= *|/ <因子> ::= <标识符>|<无符号整数>|'('<表达式>')' <空> ::= ``` 其中,用尖括号括起来的是非终结符,其他的是终结符。特别地,`const`、`var`、`procedure`、`if`、`then`、`else`、`while`、`do`、`call`、`read`、`write`、`begin`、`end`、`repeat`、`until`、`+`、`-`、`*`、`/`、`=`、`<>`、`<`、`<=`、`>`、`>=`、`,`、`;`、`(`、`)`、`:=`、`{`、`}`、`<字母>`、`<数字>`、`<无符号整数>` 都是终结符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值