MiP*_*MiP -3 grammar pascal ebnf
根据正式的Pascal EBNF定义(pg69-75),我看到Pascal只支持3种原始类型:Integer,Real和String.
在C中,任何不同的值都0
可以解释为true
文字.Pascal不像C一样工作.当Pascal没有布尔类型时,它如何处理条件表达式?
Pascal标准明确定义了布尔类型的语法和语义.
引用您链接到的文档:
6.4.2.2必需的简单类型
应存在以下类型:
...
C.布尔型.必需的type-identifier 布尔值应表示布尔类型.布尔型应为序数型.值应为由所需常量标识符false和true表示的真值的枚举,因此false是true的前身. (第16页)
值true和false 对应于EBNF生产:
constant = [ sign ] (constant-identifier | number) | string
Run Code Online (Sandbox Code Playgroud)
哪个可以产生:
constant = constant-identifier
Run Code Online (Sandbox Code Playgroud)
(因为[ sign ]
是可选的)
A constant-identifier
只是一个identifier
.
也:
6.7.2.3布尔运算符
...
Run Code Online (Sandbox Code Playgroud)Boolean-expression = expression .
Boolean-expression必须是表示Boolean-type值的表达式. (第49页)
表6(以下页面上)定义了操作数和结果类型的比较操作符(==
,<=
,>=
,<>
,<
,>
和in
).在所有情况下,结果类型都是"布尔型".
最后:
6.8.3.4 If语句
如果if语句的Boolean-expression产生值true,则应执行if语句的语句.如果Boolean-expression产生值false,则不应执行if语句的语句,并且应执行else-part的语句(如果有的话). (第54页)
归档时间: |
|
查看次数: |
252 次 |
最近记录: |