Using grammar classes |
Using grammar classesThe classes have mostly the same structure as the XML grammar format, and interpreted as the model of the grammar. Grammar grammar = new Grammar(); Production A = new Production(new Nonterminal("A")); Production B = new Production(new Nonterminal("B")); grammar.addProduction(A); grammar.addProduction(B); For the definition the class SymbolList is used. Terminal a = new Terminal("a"); Nonterminal b = new Nonterminal("b"); SymbolList definition = new SymbolList() definition.addSymbol(a); definition.addSymbol(b); A.setDefinition(definition); B.getDefinition().addSymbol(b); B.getDefinition().addSymbol(a); If you are using precedences and/or associativities, you can use the following code. A.setPrecedence(a); grammar.setAssociativity(B, Associativity.RIGHT); 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 = grammar.validate(); if (violations.getViolationCount()>0) throw new IllegalStateException(); |