usedef)refsyntaxe "informelle"
| (1) | env ::= ε | trm env |
| (2) | trm ::= def | ref |
| (3) | def ::= <nom> env rep |
| (4) | ref ::= <nom> env |
| (5) | rep ::= ε | atm rep |
| (6) | atm ::= stg | use |
| (7) | stg ::= <string> |
| (8) | use ::= <nom> env |
| (1) | un environnement est une liste de termes |
| (2) | un terme est une définition def ou une référence ref |
| (3) | une définition est : un nom <nom>, un environnement, une représentation |
| (4) | une référence est : un nom <nom>, un environnement |
| (5) | une représentation est une liste d'atomes |
| (6) | un atome est une string stg ou une utilisation use |
| (7) | une string stg est une chaîne de caractères <string> |
| (8) | une utilisation est : un nom <nom>, un environnement |
syntaxe "Lisp"
| (1) | env ::= '(' {trm} ')' |
| (2) | trm ::= def | ref |
| (3) | def ::= '(' 'def' <nom> env rep ')' |
| (4) | ref ::= '(' 'ref' <nom> env ')' |
| (5) | rep ::= '(' {atm} ')' |
| (6) | atm ::= stg | use |
| (7) | stg ::= <string> |
| (8) | use ::= '(' 'use' <nom> env ')' |
Le parenthésage permet de définir le plus sommairement possible une syntaxe qui est non ambiguë. Dans les cas d'emploi (ref ou use), on se dispensera de préfixer la liste (par 'ref' ou 'use' respectivement) s'il n'y a pas d'ambiguïté.