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.