A → a, A → BC, S → є |
S → E E → i
E → E + E
E → E * E |
Rules
suivante.
class Rules { char lhs ; List rhs ; Rules next ; Rules (char c, List s, Rules r) { lhs = c ; rhs = s ; next = r ; } } |
class List { char val ; List next; List (char c, List r) { val = c ; next = r ; } } |
static boolean isCNF(Rules rs)
qui
vérifie qu'une grammaire est en forme normale de Chomsky.
On adopte la convention que les non-terminaux sont les lettres
majuscules (identifiées par Character.isUpperCase(char c)
)
et les terminaux les autres caractères qui ne sont pas des espaces
(identifiés par Character.isSpaceChar(char c)
).
E → E E
E → O E'
E' → E F
E → a
O → (
F → ) |
static boolean parse(Chomsky g, String alpha) ; |
Chomsky
.
Cette classe offre un constructeur.
Chomsky(char start, Rules rs) |
Hashtable
) :
// Renvoie l'objet associé à key, ou null si il n'y en a pas Object get(Object key) // Associe o à key, l'ancien objet associé à key est renvoyé Object put(Object key, Object o) |
String
).
// Égalité de this et de o public boolean equals(Object o) // Renvoie un entier, deux objets égaux doivent renvoyer le même entier public int hashCode() |
class Symbols { // Constructeur de l'ensemble vide Symbols () // Test d'appartenance boolean mem(char c) // Ajout d'un élément, renvoie true si this est modifié (ie, this ne // contenait pas déjà c) boolean add (char c) } |
static Symbols getNullables(Rules rs) |
static Rules removeEmpty(Rules rs) |
Ce document a été traduit de LATEX par HEVEA