“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 320 — #330
i
i
i
i
i
i
i
i
320
B
• La syntaxe du langage Oz
nestDec(a) : :=
proc ´{´ a { pattern } ´}´ inStatement end
| fun [ lazy ] ´{´ a { pattern } ´}´ inExpression end
| functor a
[ import { variable [ at atom ]
| |variable ´(´
{ (atom | |int) [ ’:’ variable ] }+ ´)´
}+ ]
[ export { [ (atom | |int) ’:’ ] variable }+ ]
define { declPart }+ [ in statement ] end
| class a { classDesc }
{ meth methHead [ ´=´ variable ]
( inExpression | |inStatement ) end }
end
Tableau B.4 Les déclarations imbriquables.
B.3 LES AUTRES SYMBOLES NON TERMINAUX
Les tableaux B.5 et B.6 définissent les symboles non terminaux nécessaires pour la
syntaxe des instructions et des expressions. Le tableau B.5 définit la syntaxe des termes
et des formes (« patterns »). Il y a une relation proche entre termes et formes. Les
deux sont utilisés pour définir les valeurs partielles. Il n’y a que deux différences : (1)
les termes peuvent contenir toutes les expressions mais les formes ne le peuvent pas,
et (2) les formes peuvent être partielles (avec ´...´), mais les termes ne le peuvent
pas.
term : := [ ´ !´ ] variable | |int | |float | |character
| |atom | |string | unit | true | false
| |label ´(´ { [ feature ’:’ ] expression } ´)´
| |expression consBinOp expression
| ´[´ { expression }+ ´]´
pattern : := [ ´ !´ ] variable | |int | |float | |character
| |atom | |string | unit | true | false
| |label ´(´ { [ feature ’:’ ] pattern } [ ´...´ ] ´)´
| |pattern consBinOp pattern
| ´[´ { pattern }+ ´]´
Tableau B.5 Les termes et les formes.
i
i
i
i
i
i
i
i
320
B
• La syntaxe du langage Oz
nestDec(a) : :=
proc ´{´ a { pattern } ´}´ inStatement end
| fun [ lazy ] ´{´ a { pattern } ´}´ inExpression end
| functor a
[ import { variable [ at atom ]
| |variable ´(´
{ (atom | |int) [ ’:’ variable ] }+ ´)´
}+ ]
[ export { [ (atom | |int) ’:’ ] variable }+ ]
define { declPart }+ [ in statement ] end
| class a { classDesc }
{ meth methHead [ ´=´ variable ]
( inExpression | |inStatement ) end }
end
Tableau B.4 Les déclarations imbriquables.
B.3 LES AUTRES SYMBOLES NON TERMINAUX
Les tableaux B.5 et B.6 définissent les symboles non terminaux nécessaires pour la
syntaxe des instructions et des expressions. Le tableau B.5 définit la syntaxe des termes
et des formes (« patterns »). Il y a une relation proche entre termes et formes. Les
deux sont utilisés pour définir les valeurs partielles. Il n’y a que deux différences : (1)
les termes peuvent contenir toutes les expressions mais les formes ne le peuvent pas,
et (2) les formes peuvent être partielles (avec ´...´), mais les termes ne le peuvent
pas.
term : := [ ´ !´ ] variable | |int | |float | |character
| |atom | |string | unit | true | false
| |label ´(´ { [ feature ’:’ ] expression } ´)´
| |expression consBinOp expression
| ´[´ { expression }+ ´]´
pattern : := [ ´ !´ ] variable | |int | |float | |character
| |atom | |string | unit | true | false
| |label ´(´ { [ feature ’:’ ] pattern } [ ´...´ ] ´)´
| |pattern consBinOp pattern
| ´[´ { pattern }+ ´]´
Tableau B.5 Les termes et les formes.
