Exemple #1
0
 /**
  * S -> a S e
  * S -> B
  * B -> b B e
  * B -> C
  * C -> c C e
  * C -> d
  */
 public static function productions()
 {
     $productions = [];
     $productions[] = new StandardProduction(StandardSymbol::nonTerminal('S'), new Concatenation(ExpressionSymbol::createAdapterForTerminal('a'), [ExpressionSymbol::createAdapterForNonTerminal('S'), ExpressionSymbol::createAdapterForTerminal('e')]));
     $productions[] = new StandardProduction(StandardSymbol::nonTerminal('S'), ExpressionSymbol::createAdapterForNonTerminal('B'));
     $productions[] = new StandardProduction(StandardSymbol::nonTerminal('B'), new Concatenation(ExpressionSymbol::createAdapterForTerminal('b'), [ExpressionSymbol::createAdapterForNonTerminal('B'), ExpressionSymbol::createAdapterForTerminal('e')]));
     $productions[] = new StandardProduction(StandardSymbol::nonTerminal('B'), ExpressionSymbol::createAdapterForNonTerminal('C'));
     $productions[] = new StandardProduction(StandardSymbol::nonTerminal('C'), new Concatenation(ExpressionSymbol::createAdapterForTerminal('c'), [ExpressionSymbol::createAdapterForNonTerminal('C'), ExpressionSymbol::createAdapterForTerminal('e')]));
     $productions[] = new StandardProduction(StandardSymbol::nonTerminal('C'), ExpressionSymbol::createAdapterForTerminal('d'));
     return $productions;
 }
 /**
  * @param string $identifier
  * @return ExpressionSymbol
  */
 public function createNonTerminal($identifier)
 {
     return ExpressionSymbol::createAdapterForNonTerminal($identifier);
 }