1.) Can FPC expand the main program block entry point and terminator?
No. Personally I don't see any benefit in this, other than removing one identifier (Main) from the usable identifier space.
And frankly, I'd also be happy if the "Begin" statement was just completely removed.
Can FPC extend the to include the block type of which they are terminating?
(and END becoming mandatory) Me too, but then it is no longer Pascal, but closer to Modula2.
2.) One reason I am working to transition from Visual Basic .NET to Lazarus is that Lazarus matches VB in its verbosity. Is there any possibility that we can take it just a little bit further with the "End" statements?
I'd like it, but only for the END function/procedure statements. Major mistakes in the block structure are more likely to be detected and localized at such END xxx point. Doing it for other statements too is fine, but should be voluntary, not mandatory. In many cases you don't want it since it hampers refactoring.
Modula2 (Pascal's successor) required to end with the function name, so
PROCEDURE SOME;
BEGIN
END 'SOME';
And while that was useful in some far fetched cases with nested procedures, in practice it was an enormous strain on refactoring. Though I assume nowadays with IDE identifier rename this should be a bit less.
"While-do", "Repeat-until", and "For-do" loop structures should all terminate with "End Loop;".
Then I would go for Modula2, where everything but straight for is a LOOP..END with a manual IF THEN EXIT as terminator
In large tutorial examples I've seen containing several nested blocks, it is difficult to determine which "End;" terminator goes with which structure block.
Indenting, IDE tools there is even a setting to give the various levels a different colour (not perfect, but can help).
I use that, strangely enough, with Verilog. My Pascal usually is never insanely nested.
But this is all in some hypothetical case where we would start over with a new language. We are PASCAL, and we are backwards compatible with enormous codebases in both pure pascal and Delphi. Minor rearrangements that break code or splitting in radically different dialects mode is just not worth it. I would abolish OBJFPC if I had the chance