Contents | Index | < Browse | Browse >
8. ADL Program Structure
In the following extended BNF description of ADL pro-
gram structure, terminal symbols are in BOLD UPPERCASE and
non-terminals in lowercase. Items enclosed in quotes are
literal terminals.
adlprog = stmt *
stmt = "INCLUDE" STRING ";"
= "MESSAGE" STRING ";"
= decl
= assign
decl = "VERB" ilist
= "ADJEC" ilist
= "ROUTINE" ilist
= "ARTICLE" ilist
= "PREP" ilist
= "VAR" vlist
= "NOUN" nlist
assign = ID "=" expr ";"
= nounp "(" nprop ")" "=" expr ";"
= VERB "(" vprop ")" "=" routine ";"
= "(" VAR [ "+" const ] ")" "=" expr ";"
= PREP nounp PREP "=" PREP ";"
= VERB PREP "=" VERB ";"
ilist = ID ( "," ID ) * ";"
vlist = vdec ( "," vdec ) * ";"
vdec = ID [ "[" const "]" ]
nlist = nloc ( "," nloc ) * ";"
nloc = nounp [ "(" nounp ")" ]
nounp = [ modif ] NOUN
= OBJECT
modif = VERB
= ADJEC
vprop = "PREACT"
= "ACTION"
nprop = const
= "LDESC"
= "SDESC"
= "ACTION"
const = NUMBER
= CONST_ID
expr = const
= STRING
= nounp
= routine
= modif
= ROUTINE
= PREP
= ARTICLE
= VAR
routine = [ locals ] form +
locals = "LOCAL" vlist
form = "(" ifthen elseif * [ else ] ")"
= "(" "WHILE" arg "DO" form + ")"
= "(" arg + ")"
ifthen = "IF" arg "THEN" form +
elseif = "ELSEIF" arg "THEN" form +
else = "ELSE" form +
arg = form
= "@" VAR
= "[" nounp "]"
= ".ME"
= "%"NUMBER
= const
= STRING
= NOUN
= OBJECT
= ROUTINE
= modif
= PREP
= ARTICLE
= VAR
= vprop
= nprop