Question: why "end proc();" do not generate an error?

when writing by error the following

restart;
f:=proc()
dsolve(diff(y(x),x)+y(x)=0,y(x));
end proc();

Maple did not complain and returned  f := y(x) = _C1*exp(-x)

Then I noticed I needed to change "end proc();" to "end proc;" 

The question is, why did Maple not generate a syntax error? If "end proc();" is valid Maple code, then what does it mean? or Did Maple ignore it? what is the parsing steps used to make Maple generate the above output? 

Please Wait...