PHP Classes

File: example.php

Recommend this page to a friend!
  Classes of Debug   LR Parsing Tables   example.php   Download  
File: example.php
Role: Example script
Content type: text/plain
Description: Example code
Class: LR Parsing Tables
Generate parsing tables for context free grammars
Author: By
Last change:
Date: 14 years ago
Size: 1,012 bytes


Class file image Download

// This is our example script.

include("lr_parsing_tables.class.php"); // include class
$productions = array(
"expression", array("expression", "T_PLUS", "expression")),
"expression", array("expression", "T_MINUS", "expression")),
"expression", array("T_START_PAREN", "expression", "T_END_PAREN")),
"expression", array("T_INT")),
"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