<?php
// This is our example script.
include("lr_parsing_tables.class.php"); // include class
$productions = array(
array("expression", array("expression", "T_PLUS", "expression")),
array("expression", array("expression", "T_MINUS", "expression")),
array("expression", array("T_START_PAREN", "expression", "T_END_PAREN")),
array("expression", array("T_INT")),
array("expression", array("T_IDENT"))
); // these are our productions
// The grammar is:
// E -> E + E
// E -> E - E
// E -> ( E )
// E -> int
// E -> ident
// Of course, it's a bit twisted. Our nonterminals are lowercase (defined by
// if strtolower($name) == $name). Terminals are uppercase otherwise.
$LR_Parsing_Tables = new LR_Parsing_Tables($productions, "expression"); // provide productions. expression is our "start" NT.
$tables = $LR_Parsing_Tables->build(); // build the tables.
$LR_Parsing_Tables->print_tables($tables); // print them
$LR_Parsing_Tables->print_productions(); // print our productions
?>
|