Grammar for ATS/Anairiats
Some Explanation on the EBNF Notation
"..." : terminal string
::= : nonterminal definition
a , b : concatenation
(...) : grouping
{a} : 0 or more a (Kleene's star closure)
{a}+ : 1 or more a (this is an extension to the standard EBNF)
[a] : 0 or 1 a (option)
a | b : a or b (alternation)
/*...*/ : comment
program ::=
| YYBEG_d0ecseq_sta d0ecseq_sta TOKEN_eof
| YYBEG_d0ecseq_dyn d0ecseq_dyn TOKEN_eof
| YYBEG_i0de i0de TOKEN_eof
| YYBEG_s0rtid s0rtid TOKEN_eof
| YYBEG_si0de si0de TOKEN_eof
| YYBEG_di0de di0de TOKEN_eof
| YYBEG_s0exp s0exp TOKEN_eof
| YYBEG_d0exp d0exp TOKEN_eof
;
abskind ::=
| "absprop"
| "abstype"
| "abst@ype"
| "absview"
| "absviewtype"
| "absviewt@ype"
;
dcstkind ::=
| "fun"
| "val"
| "castfn"
| "praxi"
| "prfun"
| "prval"
;
datakind ::=
| "dataprop"
| "datatype"
| "dataview"
| "dataviewtype"
;
stadefkind ::=
| "stadef"
| "propdef"
| "typedef"
| "viewdef"
| "viewtypedef"
;
valkind ::=
| "val"
| "val-"
| "val+"
| "prval"
;
funkind ::=
| "fn"
| "fn*"
| "fun"
| "castfn"
| "prfn"
| "prfun"
;
lamkind ::=
| "lam"
| "@lam"
| "llam"
| "@llam"
;
fixkind ::=
| "fix"
| "@fix"
;
srpifkind ::=
| "#if"
| "#ifdef"
| "#ifndef"
;
srpelifkind ::=
| "#elif"
| "#elifdef"
| "#elifndef"
;
srpthenopt ::=
| ["#then"]
;
i0de ::=
| ALNUMRIC_IDENTIFIER
| SYMBOLIC_IDENTIFIER
| "&"
| "\"
| "!"
| "="
| ">"
| "><"
| "<"
| "->"
| "-<>"
| "~"
;
i0de_dlr ::=
| IDENTIFIER_dlr
;
i0deseq ::=
| {i0de}
;
i0dext ::=
| EXTERNAL_IDENTIFIER
| "do"
| "while"
;
l0ab ::=
| i0de
| LITERAL_int
| "(" l0ab ")"
;
stai0de ::=
| ALNUMRIC_IDENTIFIER
;
p0rec ::=
|
| LITERAL_int
| "(" i0de ")"
| "(" i0de SYMBOLIC_IDENTIFIER LITERAL_int ")"
;
e0xp ::=
| {atme0xp}+
;
atme0xp ::=
| LITERAL_char
| LITERAL_float
| LITERAL_int
| LITERAL_string
| "#FILENAME"
| "#LOCATION"
| i0de
| "(" e0xpseq ")"
| "%(" e0xp ")"
;
e0xpseq ::=
|
| e0xp commae0xpseq
;
commae0xpseq ::=
| {"," , e0xp}
;
e0xpopt ::=
| [e0xp]
;
e0ffid ::=
| ALNUMRIC_IDENTIFIER
;
e0fftag ::=
| "!" e0ffid
| "~" e0ffid
| e0ffid
| "fun"
| LITERAL_int
;
e0fftagseq ::=
|
| e0fftag commae0fftagseq
;
commae0fftagseq ::=
| {"," , e0fftag}
;
colonwith ::=
| ":"
| ":<>"
| ":<" e0fftagseq ">"
;
s0rt ::=
| {atms0rt}+
;
s0rtq ::=
| i0de_dlr "."
| "$" LITERAL_string "."
;
s0rtid ::=
| ALNUMRIC_IDENTIFIER
| SYMBOLIC_IDENTIFIER
| "t@ype"
| "viewt@ype"
| "\"
| "->"
| "-<>"
;
atms0rt ::=
| s0rtid
| s0rtq s0rtid
| "(" s0rtseq ")"
| "@(" s0rtseq ")"
;
s0rtseq ::=
|
| s0rt commas0rtseq
;
commas0rtseq ::=
| {"," , s0rt}
;
s0rtpol ::=
| s0rt
| "prop-"
| "prop+"
| "type-"
| "type+"
| "t@ype-"
| "t@ype+"
| "view-"
| "view+"
| "viewtype-"
| "viewtype+"
| "viewt@ype-"
| "viewt@ype+"
;
d0atsrtcon ::=
| i0de
| i0de "of" s0rt
;
d0atsrtconseq ::=
| bard0atsrtconseq
| d0atsrtcon bard0atsrtconseq
;
bard0atsrtconseq ::=
| {"|" , d0atsrtcon}
;
d0atsrtdec ::=
| i0de "=" d0atsrtconseq
;
andd0atsrtdecseq ::=
| {"and" , d0atsrtdec}
;
s0taq ::=
| i0de_dlr "."
| i0de_dlr ":"
| "$" LITERAL_string "."
;
d0ynq ::=
| i0de_dlr "."
| i0de_dlr ":"
| i0de_dlr i0de_dlr ":"
| "$" LITERAL_string "."
| "$" LITERAL_string i0de_dlr ":"
;
si0de ::=
| ALNUMRIC_IDENTIFIER
| SYMBOLIC_IDENTIFIER
| "r@ead"
| "&"
| "\"
| "!"
| ">"
| "<"
| "->"
| "~"
;
sqi0de ::=
| si0de
| s0taq si0de
;
commasi0deseq ::=
| {"," , si0de}
;
di0de ::=
| ALNUMRIC_IDENTIFIER
| SYMBOLIC_IDENTIFIER
| "\"
| "!"
| "="
| ">"
| "><"
| "<"
| "~"
;
dqi0de ::=
| di0de
| d0ynq di0de
;
pi0de ::=
| ALNUMRIC_IDENTIFIER
| SYMBOLIC_IDENTIFIER
;
fi0de ::=
| di0de
| "op" di0de
;
arri0de ::=
| ARRAY_IDENTIFIER
;
arrqi0de ::=
| arri0de
| d0ynq arri0de
;
tmpi0de ::=
| TEMPLATE_IDENTIFIER
;
tmpqi0de ::=
| tmpi0de
| d0ynq tmpi0de
;
colons0rtopt ::=
| [":" , s0rt]
;
s0arg ::=
| si0de colons0rtopt
;
s0argseq ::=
|
| s0arg commas0argseq
;
commas0argseq ::=
| {"," , s0arg}
;
s0argseqseq ::=
|
| si0de s0argseqseq
| "(" s0argseq ")" s0argseqseq
;
decs0argseq ::=
|
| s0arg commadecs0argseq
;
commadecs0argseq ::=
| {"," , s0arg}
;
decs0argseqseq ::=
|
| "{" decs0argseq "}" decs0argseqseq
;
sp0at ::=
| sqi0de "(" s0argseq ")"
;
s0exp ::=
| apps0exp
| exts0exp
| s0exp ":" s0rt
| "lam" s0argseqseq colons0rtopt "=>" s0exp
;
atms0exp ::=
| LITERAL_char
| LITERAL_int
| LITERAL_intsp
| si0de
| "op" si0de
| s0taq si0de
| "(" s0expseq ")"
| "(" s0expseq "|" s0expseq ")"
| "@(" s0expseq ")"
| "'(" s0expseq ")"
| "$tup_t" "(" s0expseq ")"
| "$tup_vt" "(" s0expseq ")"
| "@(" s0expseq "|" s0expseq ")"
| "'(" s0expseq "|" s0expseq ")"
| "$tup_t" "(" s0expseq "|" s0expseq ")"
| "$tup_vt" "(" s0expseq "|" s0expseq ")"
| "@{" labs0expseq "}"
| "'{" labs0expseq "}"
| "$rec_t" "{" labs0expseq "}"
| "$rec_vt" "{" labs0expseq "}"
| "$extype_struct" LITERAL_string "of" "{" labs0expseq "}"
| "@[" s0exp "]" "[" s0arrind
| "-<" e0fftagseq ">"
| "-<>"
| "{" s0quaseq "}"
| "[" s0quaseq "]"
| "#[" s0quaseq "]"
;
apps0exp ::=
| {atms0exp}+
;
exts0exp ::=
| "$extype" LITERAL_string
| exts0exp atms0exp
;
s0expelt ::=
|
| "{" s0exp "}"
| "[" s0exp "]"
;
s0arrind ::=
| s0expseq "]"
| s0expseq "]" "[" s0arrind
;
s0qua ::=
| apps0exp
| si0de commasi0deseq ":" s0rtext
;
s0quaseq ::=
|
| s0qua barsemis0quaseq
;
barsemis0quaseq ::=
| {("|" | ";") , s0qua}
;
s0rtext ::=
| s0rt
| "{" si0de ":" s0rtext "|" s0exp barsemis0expseq "}"
;
s0expseq ::=
|
| s0expseq1
;
barsemis0expseq ::=
| {("|" | ";") , s0exp}
;
commas0expseq ::=
| {"," , s0exp}
;
s0expseq1 ::=
| s0exp commas0expseq
;
labs0expseq ::=
|
| l0ab "=" s0exp commalabs0expseq
;
commalabs0expseq ::=
| {"," , l0ab , "=" , s0exp}
;
t0mps0exp ::=
| {atms0exp}+
;
t1mps0exp ::=
| t0mps0exp
;
t1mps0expseq ::=
|
| t1mps0exp commat1mps0expseq
;
commat1mps0expseq ::=
| {"," , t1mps0exp}
;
gtlt_t1mps0expseqseq ::=
|
| "><" t1mps0expseq gtlt_t1mps0expseqseq
;
impqi0de ::=
| dqi0de
| tmpqi0de t1mps0expseq gtlt_t1mps0expseqseq ">"
;
s0rtdef ::=
| s0rtid "=" s0rtext
;
ands0rtdefseq ::=
| {"and" , s0rtdef}
;
d0atarg ::=
| s0rtpol
| i0de ":" s0rtpol
;
d0atargseq ::=
|
| d0atarg commad0atargseq
;
commad0atargseq ::=
| {"," , d0atarg}
;
s0tacon ::=
| si0de
| si0de "(" d0atargseq ")"
| si0de "=" s0exp
| si0de "(" d0atargseq ")" "=" s0exp
;
ands0taconseq ::=
| {"and" , s0tacon}
;
s0tacst ::=
| si0de ":" s0rt
| si0de "(" d0atargseq ")" ":" s0rt
;
ands0tacstseq ::=
| {"and" , s0tacst}
;
s0tavar ::=
| si0de ":" s0rt
;
ands0tavarseq ::=
| {"and" , s0tavar}
;
s0expdef ::=
| si0de s0argseqseq colons0rtopt "=" s0exp
;
ands0expdefseq ::=
| {"and" , s0expdef}
;
s0aspdec ::=
| sqi0de s0argseqseq colons0rtopt "=" s0exp
;
conq0uaseq ::=
|
| "{" s0quaseq "}" conq0uaseq
;
coni0ndopt ::=
|
| "(" s0expseq ")"
;
cona0rgopt ::=
|
| "of" s0exp
;
d0atcon ::=
| conq0uaseq di0de coni0ndopt cona0rgopt
;
d0atconseq ::=
| bard0atconseq
| d0atcon bard0atconseq
;
bard0atconseq ::=
| {"|" , d0atcon}
;
d0atdec ::=
| si0de "=" d0atconseq
| si0de "(" d0atargseq ")" "=" d0atconseq
;
andd0atdecseq ::=
| {"and" , d0atdec}
;
s0expdefseqopt ::=
|
| "where" s0expdef ands0expdefseq
;
e0xndec ::=
| conq0uaseq di0de cona0rgopt
;
ande0xndecseq ::=
| {"and" , e0xndec}
;
p0arg ::=
| pi0de
| pi0de ":" s0exp
;
p0argseq ::=
|
| p0arg commap0argseq
;
commap0argseq ::=
| {"," , p0arg}
;
d0arg ::=
| pi0de
| "(" p0argseq ")"
| "(" p0argseq "|" p0argseq ")"
| "{" s0quaseq "}"
;
d0argseq ::=
| {d0arg}
;
extnamopt ::=
|
| "=" LITERAL_string
;
d0cstdec ::=
| di0de d0argseq colonwith s0exp extnamopt
;
andd0cstdecseq ::=
| {"and" , d0cstdec}
;
s0vararg ::=
| ".."
| "..."
| s0argseq
;
s0exparg ::=
| ".."
| "..."
| s0expseq1
;
s0elop ::=
| "."
| "->"
;
witht0ype ::=
|
| "withprop" s0exp
| "withtype" s0exp
| "withview" s0exp
| "withviewtype" s0exp
;
p0at ::=
| atmp0at argp0atseq
| p0at ":" s0exp
| pi0de "as" p0at
| "!" pi0de "as" p0at
| "~" p0at
;
atmp0at ::=
| LITERAL_char
| LITERAL_int
| LITERAL_float
| LITERAL_string
| pi0de
| "!" pi0de
| "op" pi0de
| d0ynq pi0de
| "(" p0atseq ")"
| "(" p0atseq "|" p0atseq ")"
| "'[" p0atseq "]"
| "@(" p0atseq ")"
| "'(" p0atseq ")"
| "@(" p0atseq "|" p0atseq ")"
| "'(" p0atseq "|" p0atseq ")"
| "@{" labp0atseq "}"
| "'{" labp0atseq "}"
| "[" s0argseq "]"
;
argp0at ::=
| atmp0at
| "{" s0vararg "}"
;
argp0atseq ::=
| {argp0at}
;
p0atseq ::=
|
| p0at commap0atseq
;
commap0atseq ::=
| {"," , p0at}
;
labp0atseq ::=
| "..."
| l0ab "=" p0at commalabp0atseq
;
commalabp0atseq ::=
| {"," , l0ab , "=" , p0at}
;
f0arg1 ::=
| "{" s0quaseq "}"
| atmp0at
| ".<" s0expseq ">."
| ".<>."
;
f0arg1seq ::=
| {f0arg1}
;
f0arg2 ::=
| "{" s0argseq "}"
| atmp0at
;
f0arg2seq ::=
| {f0arg2}
;
d0exp ::=
| atmd0exp argd0expseq
| d0exp ":" s0exp
| ifhead d0exp "then" d0exp
| ifhead d0exp "then" d0exp "else" d0exp
| sifhead s0exp "then" d0exp "else" d0exp
| casehead d0exp "of" c0lauseq
| scasehead s0exp "of" sc0lauseq
| lamkind f0arg1seq colons0expopt funarrow d0exp
| fixkind di0de f0arg1seq colons0expopt funarrow d0exp
| forhead initestpost d0exp
| whilehead atmd0exp d0exp
| "$raise" d0exp
| tryhead d0expsemiseq0 "with" c0lauseq
| d0exp "where" "{" d0ecseq_dyn "}"
;
atmd0exp ::=
| LITERAL_char
| LITERAL_float
| LITERAL_floatsp
| LITERAL_int
| LITERAL_intsp
| LITERAL_string
| "#FILENAME"
| "#LOCATION"
| di0de
| "op" di0de
| d0ynq i0de
| i0dext
| "&"
| "break"
| "continue"
| "fold@" s0expdargseq
| "free@" s0expdargseq
| "view@"
| "$decrypt"
| "$encrypt"
| "$delay"
| "$ldelay"
| "$dynload"
| "$effmask_all"
| "$effmask_exn"
| "$effmask_ntm"
| "$effmask_ref"
| "@[" s0exp "]" "(" d0expcommaseq ")"
| "@[" s0exp "]" "[" d0exp "]" "(" d0expcommaseq ")"
| "$arrsz" s0expelt "(" d0expcommaseq ")"
| arrqi0de d0arrind
| s0elop l0ab
| s0elop "[" d0arrind
| tmpqi0de t1mps0expseq gtlt_t1mps0expseqseq ">"
| "#[" s0exparg "|" d0exp "]"
| "(" d0expcommaseq ")"
| "(" d0expcommaseq "|" d0expcommaseq ")"
| "$lst_t" s0expelt "(" d0expcommaseq ")"
| "$lst_vt" s0expelt "(" d0expcommaseq ")"
| "'[" d0expcommaseq "]"
| "begin" d0expsemiseq0 "end"
| "(" d0expsemiseq1 ")"
| "@(" d0expcommaseq ")"
| "'(" d0expcommaseq ")"
| "$tup_t" "(" d0expcommaseq ")"
| "$tup_vt" "(" d0expcommaseq ")"
| "@(" d0expcommaseq "|" d0expcommaseq ")"
| "'(" d0expcommaseq "|" d0expcommaseq ")"
| "@{" labd0expseq "}"
| "'{" labd0expseq "}"
| "$rec_t" "{" labd0expseq "}"
| "$rec_vt" "{" labd0expseq "}"
| "$extval" "(" s0exp "," LITERAL_string ")"
| "%(" d0exp ")"
| ",(" d0exp ")"
| "`(" d0expsemiseq0 ")"
| "let" d0ecseq_dyn "in" d0expsemiseq0 "end"
| "{" d0ecseq_dyn "}"
;
s0expdarg ::=
| "{" s0exparg "}"
;
s0expdargseq ::=
| {s0expdarg}
;
argd0exp ::=
| atmd0exp
| s0expdarg
;
argd0expseq ::=
| {argd0exp}
;
d0arrind ::=
| d0expcommaseq "]"
| d0expcommaseq "]" "[" d0arrind
;
colons0expopt ::=
|
| ":" s0exp
;
funarrow ::=
| "=>"
| "=<>"
| "=<" e0fftagseq ">"
;
caseinv ::=
|
| i0nvresstate "=>"
;
ifhead ::=
| "if" caseinv
;
sifhead ::=
| "sif" caseinv
;
casehead ::=
| "case" caseinv
| "case-" caseinv
| "case+" caseinv
;
scasehead ::=
| "scase" caseinv
;
forhead ::=
| "for"
| "for*" loopi0nv "=>"
;
whilehead ::=
| "while*" loopi0nv "=>"
;
tryhead ::=
| "try"
;
d0expcommaseq ::=
|
| d0exp commad0expseq
;
commad0expseq ::=
| {"," , d0exp}
;
d0expsemiseq0 ::=
|
| d0exp
| d0exp ";" d0expsemiseq0
;
d0expsemiseq1 ::=
| d0exp ";" d0expsemiseq0
;
labd0expseq ::=
|
| l0ab "=" d0exp commalabd0expseq
;
commalabd0expseq ::=
| {"," , l0ab , "=" , d0exp}
;
m0atch ::=
| d0exp
| d0exp "as" p0at
;
m0atchseq ::=
| m0atch andm0atchseq
;
andm0atchseq ::=
| {"and" , m0atch}
;
guap0at ::=
| p0at
| p0at "when" m0atchseq
;
c0lau ::=
| guap0at "=>" d0exp
| guap0at "=>>" d0exp
| guap0at "=/=>" d0exp
| guap0at "=/=>>" d0exp
;
c0lauseq ::=
| barc0lauseq
| c0lau barc0lauseq
;
barc0lauseq ::=
| {"|" , c0lau}
;
sc0lau ::=
| sp0at "=>" d0exp
;
sc0lauseq ::=
| barsc0lauseq
| sc0lau barsc0lauseq
;
barsc0lauseq ::=
| {"|" , sc0lau}
;
i0nvqua ::=
|
| "{" s0quaseq "}"
;
i0nvmet ::=
|
| ".<" s0expseq ">."
| ".<>."
;
i0nvarg ::=
| di0de ":"
| di0de ":" s0exp
;
i0nvargseq ::=
|
| i0nvarg commai0nvargseq
;
commai0nvargseq ::=
| {"," , i0nvarg}
;
i0nvargstate ::=
| "(" i0nvargseq ")"
;
i0nvresqua ::=
|
| "[" s0quaseq "]"
;
i0nvresstate ::=
|
| ":" i0nvresqua "(" i0nvargseq ")"
;
loopi0nv ::=
| i0nvqua i0nvmet i0nvargstate i0nvresstate
;
initestpost ::=
| "(" d0expcommaseq ";" d0expcommaseq ";" d0expcommaseq ")"
;
m0arg ::=
| pi0de
;
m0argseq ::=
|
| m0arg commam0argseq
;
commam0argseq ::=
| {"," , m0arg}
;
m0acarg ::=
| m0arg
| "(" m0argseq ")"
;
m0acargseq ::=
| {m0acarg}
;
m0acdef ::=
| di0de m0acargseq "=" d0exp
;
andm0acdefseq ::=
| {"and" , m0acdef}
;
v0aldec ::=
| p0at "=" d0exp witht0ype
;
andv0aldecseq ::=
| {"and" , v0aldec}
;
f0undec ::=
| fi0de f0arg1seq "=" d0exp witht0ype
| fi0de f0arg1seq colonwith s0exp "=" d0exp witht0ype
;
andf0undecseq ::=
| {"and" , f0undec}
;
v0arwth ::=
|
| "with" pi0de
;
v0ardec ::=
| pi0de v0arwth "=" d0exp
| "!" pi0de v0arwth "=" d0exp
| pi0de ":" s0exp v0arwth
| pi0de ":" s0exp v0arwth "=" d0exp
;
andv0ardecseq ::=
| {"and" , v0ardec}
;
i0mpdec ::=
| impqi0de f0arg2seq colons0expopt "=" d0exp
;
d0ec ::=
| "infix" p0rec i0deseq
| "infixl" p0rec i0deseq
| "infixr" p0rec i0deseq
| "prefix" p0rec i0deseq
| "postfix" p0rec i0deseq
| "nonfix" i0deseq
| "symintr" i0deseq
| "#undef" i0de
| "#define" i0de e0xpopt
| "#assert" e0xp
| "#error" e0xp
| "#print" e0xp
| "sortdef" s0rtdef ands0rtdefseq
| "datasort" d0atsrtdec andd0atsrtdecseq
| "dataparasort" d0atsrtdec andd0atsrtdecseq
| abskind s0tacon ands0taconseq
| "stacst" s0tacst ands0tacstseq
| "stavar" s0tavar ands0tavarseq
| stadefkind s0expdef ands0expdefseq
| "assume" s0aspdec
| datakind d0atdec andd0atdecseq s0expdefseqopt
| "exception" e0xndec ande0xndecseq
| "classdec" si0de
| "classdec" si0de ":" s0exp
| "overload" di0de "with" dqi0de
| "overload" "[" "]" "with" dqi0de
| "macdef" m0acdef andm0acdefseq
| "macdef" "rec" m0acdef andm0acdefseq
| "macrodef" m0acdef andm0acdefseq
| "macrodef" "rec" m0acdef andm0acdefseq
| "staload" LITERAL_string
| "staload" stai0de "=" LITERAL_string
;
d0ecarg ::=
| "{" s0quaseq "}"
;
d0ecargseq ::=
| {d0ecarg}
;
semicolonseq ::=
| {";"}
;
d0ec_sta ::=
| d0ec
| dcstkind d0ecargseq d0cstdec andd0cstdecseq
| LITERAL_extcode
| srpifkind guad0ec_sta
| "#include" LITERAL_string
| "local" d0ecseq_sta "in" d0ecseq_sta "end"
;
guad0ec_sta ::=
| e0xp srpthenopt d0ecseq_sta "#endif"
| e0xp srpthenopt d0ecseq_sta "#else" d0ecseq_sta "#endif"
| e0xp srpthenopt d0ecseq_sta srpelifkind guad0ec_sta
;
d0ecseq_sta ::=
| d0ecseq_sta_rev
;
d0ecseq_sta_rev ::=
|
| d0ecseq_sta_rev d0ec_sta semicolonseq
;
d0ec_dyn ::=
| d0ec
| "extern" dcstkind d0ecargseq d0cstdec andd0cstdecseq
| "extern" "typedef" LITERAL_string "=" s0exp
| "extern" "val" LITERAL_string "=" d0exp
| valkind v0aldec andv0aldecseq
| "val" "par" v0aldec andv0aldecseq
| "val" "rec" v0aldec andv0aldecseq
| funkind d0ecargseq f0undec andf0undecseq
| "var" v0ardec andv0ardecseq
| "implement" decs0argseqseq i0mpdec
| "local" d0ecseq_dyn "in" d0ecseq_dyn "end"
| LITERAL_extcode
| srpifkind guad0ec_dyn
| "#include" LITERAL_string
| "dynload" LITERAL_string
;
guad0ec_dyn ::=
| e0xp srpthenopt d0ecseq_dyn "#endif"
| e0xp srpthenopt d0ecseq_dyn "#else" d0ecseq_dyn "#endif"
| e0xp srpthenopt d0ecseq_dyn srpelifkind guad0ec_dyn
;
d0ecseq_dyn ::=
| d0ecseq_dyn_rev
;
d0ecseq_dyn_rev ::=
|
| d0ecseq_dyn_rev d0ec_dyn semicolonseq
;