Chris Newman <Chris(_dot_)Newman(_at_)innosoft(_dot_)com> writes:
d) Forbid extension control structures unless script also includes a
"require <extension>" prior to their use.
That doesn't help. Consider
if support "foo" then
require "bar"
bar "andrew.cmu.edu" then
qux;
elsif "cs.cmu.edu" then
baz;
else
thud;
endbar
else
# do it the old fashioned way
# ...
endif
Okay, so there's a require. You still lose - you have no idea what
that bar is doing. You can't even tell that it's a control structure,
and not a command. You don't know which else goes with your if. It's
completely ambiguous without knowledge of the bar extension.
In addition, that's a horrible way to design a language. A parser
for the base language SHOULD be able to recognize any string in that
language with extensions.
(As an aside, the example under require in the spec doesn't parse,
'cause require's a control structure, and control structures don't end
with ';'s. :-)
)Rob