Using lexicon classes

The classes have mostly the same structure as the XML lexicon format, and interpreted as the model of the lexicon.

Lexicon lexicon = new Lexicon();

Lexeme A = new Lexeme(new Terminal("A"));
Lexeme B = new Lexeme();

lexicon.addLexeme(A);
lexicon.addLexeme(B);

For the definition the Pattern classes are used.

Concatenation definition = new Concatenation();
definition.addPattern(new CharacterString("foo"));
definition.addPattern(new CharacterString("bar"));

A.setDefinition(definition);

Alternation alternation = new Alternation();
alternation.addPattern(new CharacterString("one"));
alternation.addPattern(new CharacterString("two"));

B.setDefinition(alternation);

As last step you should always validate your model. You can do this simply by using the validate method. Which returns a list of violations. If this list is empty your grammar is valid.

Violations violations = lexicon.validate();

if (violations.getViolationCount()>0)
  throw new IllegalStateException();
by Stephan Michels