TD-5, analyse syntaxique, vérification de tautologies |
|
| B | = | true | false | VAR | B \/ B | B /\ B | ! B | ( B ) |
| B | = | O EOF | Expressions | |
| O | = | E \/ O | E | Disjonctions | |
| E | = | F /\ E | F | Conjonctions | |
| F | = | true | false | VAR | ! O | ( O ) | Expressions de base |
|
|
|
static Bool parse (Reader in)Telle que parse réalise l'analyse syntaxique du flot in. Il est fortement conseillé de considérer la section 1 de ce document et de s'inspirer des transparents (planches 9, puis 15 et 16). C'est à dire qu'il est conseillé de transformer les règles de la section 1 en un programme, comme les planches 15 et 16 sont le programme correspondant à la planche 9.
public static void main (String [] args) {
Bool b = parse(new InputStreamReader (System.in)) ;
System.err.println("Voici l'arbre :\n" + b.display ()) ;
System.out.println(b) ;
return ;
}
maranget@manche ~/TD/TD-5 > cat ex1.b
A \/ B \/ C
maranget@manche ~/TD/TD-5 > java LL < ex1.b
java LL < ../ex1.b
Voici l'arbre :
____OR_
_OR_ C
A B
((A \/ B) \/ C)
maranget@manche ~/TD/TD-5 > cat ex2.b
A \/ !B /\ C
maranget@manche ~/TD/TD-5 > java LL < ex2.b
Voici l'arbre :
_OR_____
A __AND_
NOT C
|
B
(A \/ (!B /\ C))
On remarquera que
suivre directement la technique des transparents donnera
des arbres qui penchent
naturellement à droite en l'absence de parenthèses explicites
Essayez de les faire pencher naturellement à gauche,
(cf. le premier exemple).
Bon, si on veut faire sérieux, on parlera de l'associativité gauche ou
droite des opérateurs /\ et \/. Mais ça me semble un peu plus
confus que la notion de pencher d'un côté ou de l'autre surtout si on
considère que les opérateurs sous-jacents sont associatifs...Solution.
|
|
| Dernière modification : 2002-11-27 |
Ce document a été traduit de LATEX par HEVEA.