“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 319 — #329
i
i
i
i
i
i
i
i
B.2 Les instructions et les expressions
319
gabarit est instancié chaque fois qu’il est utilisé. Par exemple, nestCon(a) définit
le gabarit pour les constructions imbriquables sauf les déclarations. Ce gabarit est
utilisé deux fois, comme nestCon(statement) et comme nestCon(expression), ce
qui donne chaque fois une règle de grammaire.
statement
: := nestCon(statement) | |nestDec(variable)
| skip | |statement statement
expression
: := nestCon(expression) | |nestDec(´$´)
| |unaryOp expression
| |expression evalBinOp expression
| ´$´ | |term | self
inStatement : := [ { declPart }+ in ] statement
inExpression : := [ { declPart }+ in ]
[ statement ] expression
in(statement) : := inStatement
in(expression) : := inExpression
Tableau B.2 Les instructions et les expressions.
nestCon(a) : :=
expression ( ´=´ | ’:=’ | ´,´ ) expression
| ´{´ expression { expression } ´}´
| local { declPart }+ in [ statement ] a end
| ´(´ in(a) ´)´
| if expression then in(a)
{ elseif expression then in(a) }
[ else in(a) ] end
| case expression of pattern [ andthen expression ]
then in(a)
{ ´[]´ pattern [ andthen expression ] then in(a) }
[ else in(a) ] end
| for { loopDec }+ do in(a) end
| try in(a)
[ catch pattern then in(a)
{ ´[]´ pattern then in(a) } ]
[ finally inStatement ] end
| raise inExpression end
| thread in(a) end
| lock [ expression then ] in(a) end
Tableau B.3 Les constructions imbriquables (sans les déclarations).
© Dunod – La photocopie non autorisée est un délit
i
i
i
i
i
i
i
i
B.2 Les instructions et les expressions
319
gabarit est instancié chaque fois qu’il est utilisé. Par exemple, nestCon(a) définit
le gabarit pour les constructions imbriquables sauf les déclarations. Ce gabarit est
utilisé deux fois, comme nestCon(statement) et comme nestCon(expression), ce
qui donne chaque fois une règle de grammaire.
statement
: := nestCon(statement) | |nestDec(variable)
| skip | |statement statement
expression
: := nestCon(expression) | |nestDec(´$´)
| |unaryOp expression
| |expression evalBinOp expression
| ´$´ | |term | self
inStatement : := [ { declPart }+ in ] statement
inExpression : := [ { declPart }+ in ]
[ statement ] expression
in(statement) : := inStatement
in(expression) : := inExpression
Tableau B.2 Les instructions et les expressions.
nestCon(a) : :=
expression ( ´=´ | ’:=’ | ´,´ ) expression
| ´{´ expression { expression } ´}´
| local { declPart }+ in [ statement ] a end
| ´(´ in(a) ´)´
| if expression then in(a)
{ elseif expression then in(a) }
[ else in(a) ] end
| case expression of pattern [ andthen expression ]
then in(a)
{ ´[]´ pattern [ andthen expression ] then in(a) }
[ else in(a) ] end
| for { loopDec }+ do in(a) end
| try in(a)
[ catch pattern then in(a)
{ ´[]´ pattern then in(a) } ]
[ finally inStatement ] end
| raise inExpression end
| thread in(a) end
| lock [ expression then ] in(a) end
Tableau B.3 Les constructions imbriquables (sans les déclarations).
© Dunod – La photocopie non autorisée est un délit
