阅读this帕斯卡BNF语法我不明白为什么需要出现在函数定义中的end
之后。功能镦看到后,function-block
多数民众赞成block
可能会出现:在这个BNF语法中匹配的地方; '结束'后
function-declaration =
function-heading ";" function-body |
function-heading ";" directive |
function-identification ";" function-body .
function-body =
block .
当begin
出现,这是一个statement-par
的一部分,这是一个块的一部分,它是由statement-part
处理,对不对?
block =
declaration-part statement-part .
statement-part =
begin statement-sequence end .
注意statement-part
。 end
关键字后不存在;
,这不是statement-sequence
的一部分。所以,我不明白编译器有缺乏;
如何索赔后end
关键字,就像这个例子:
function myabs(i : integer) : integer;
begin
if i < 0 then begin i := -i; end; < -- it's process by statement-sequence, so, ';' may appear
myabs := i;
end; <-- it is the semicolon what about I'm speaking
我缺少什么?我读错了语法吗?我试过的所有Pascal编译器都会给出一个错误,如果我省略这个。
就在这个相同的链接,它是汇集了'功能declaration'和'功能body',即部分:'程序 - 和 - function-declaration-part = {(procedure-declaration | function-declaration)“;” }这就是分号的地方。 – lurker
为什么-1? donwvoter请解释一下? –