lime/examples/calc.class

434 lines
8.7 KiB
Plaintext

<?php
/*
*** DON'T EDIT THIS FILE! ***
*
* This file was automatically generated by the Lime parser generator.
* The real source code you should be looking at is in one or more
* grammar files in the Lime format.
*
* THE ONLY REASON TO LOOK AT THIS FILE is to see where in the grammar
* file that your error happened, because there are enough comments to
* help you debug your grammar.
* If you ignore this warning, you're shooting yourself in the brain,
* not the foot.
*/
class calc extends lime_parser {
public $qi = 0;
public $i = array(
array(
'exp' => 's 1',
'var' => 's 23',
'num' => 's 3',
"'+'" => 's 16',
"'-'" => 's 18',
"'('" => 's 20',
'stmt' => 's 26',
"'start'" => "a 'start'"
),
array(
"'+'" => 's 2',
"'-'" => 's 6',
"'*'" => 's 8',
"'/'" => 's 10',
"'^'" => 's 12',
"'%'" => 's 14',
'#' => 'r 0'
),
array(
'num' => 's 3',
'var' => 's 4',
'exp' => 's 5',
"'+'" => 's 16',
"'-'" => 's 18',
"'('" => 's 20'
),
array(
"'+'" => 'r 2',
"'-'" => 'r 2',
"'*'" => 'r 2',
"'/'" => 'r 2',
"'^'" => 'r 2',
"'%'" => 'r 2',
"')'" => 'r 2',
'#' => 'r 2'
),
array(
"'+'" => 'r 3',
"'-'" => 'r 3',
"'*'" => 'r 3',
"'/'" => 'r 3',
"'^'" => 'r 3',
"'%'" => 'r 3',
"')'" => 'r 3',
'#' => 'r 3'
),
array(
"'+'" => 'r 4',
"'-'" => 'r 4',
"'*'" => 's 8',
"'/'" => 's 10',
"'^'" => 's 12',
"'%'" => 's 14',
"')'" => 'r 4',
'#' => 'r 4'
),
array(
'num' => 's 3',
'var' => 's 4',
'exp' => 's 7',
"'+'" => 's 16',
"'-'" => 's 18',
"'('" => 's 20'
),
array(
"'+'" => 'r 5',
"'-'" => 'r 5',
"'*'" => 's 8',
"'/'" => 's 10',
"'^'" => 's 12',
"'%'" => 's 14',
"')'" => 'r 5',
'#' => 'r 5'
),
array(
'num' => 's 3',
'var' => 's 4',
'exp' => 's 9',
"'+'" => 's 16',
"'-'" => 's 18',
"'('" => 's 20'
),
array(
"'+'" => 'r 6',
"'-'" => 'r 6',
"'*'" => 'r 6',
"'/'" => 'r 6',
"'^'" => 's 12',
"'%'" => 'r 6',
"')'" => 'r 6',
'#' => 'r 6'
),
array(
'num' => 's 3',
'var' => 's 4',
'exp' => 's 11',
"'+'" => 's 16',
"'-'" => 's 18',
"'('" => 's 20'
),
array(
"'+'" => 'r 7',
"'-'" => 'r 7',
"'*'" => 'r 7',
"'/'" => 'r 7',
"'^'" => 's 12',
"'%'" => 'r 7',
"')'" => 'r 7',
'#' => 'r 7'
),
array(
'num' => 's 3',
'var' => 's 4',
'exp' => 's 13',
"'+'" => 's 16',
"'-'" => 's 18',
"'('" => 's 20'
),
array(
"'+'" => 'r 8',
"'-'" => 'r 8',
"'*'" => 'r 8',
"'/'" => 'r 8',
"'^'" => 's 12',
"'%'" => 'r 8',
"')'" => 'r 8',
'#' => 'r 8'
),
array(
'num' => 's 3',
'var' => 's 4',
'exp' => 's 15',
"'+'" => 's 16',
"'-'" => 's 18',
"'('" => 's 20'
),
array(
"'+'" => 'r 9',
"'-'" => 'r 9',
"'*'" => 'r 9',
"'/'" => 'r 9',
"'^'" => 's 12',
"'%'" => 'r 9',
"')'" => 'r 9',
'#' => 'r 9'
),
array(
'num' => 's 3',
'var' => 's 4',
'exp' => 's 17',
"'+'" => 's 16',
"'-'" => 's 18',
"'('" => 's 20'
),
array(
"'+'" => 'r 10',
"'-'" => 'r 10',
"'*'" => 'r 10',
"'/'" => 'r 10',
"'^'" => 'r 10',
"'%'" => 'r 10',
"')'" => 'r 10',
'#' => 'r 10'
),
array(
'num' => 's 3',
'var' => 's 4',
'exp' => 's 19',
"'+'" => 's 16',
"'-'" => 's 18',
"'('" => 's 20'
),
array(
"'+'" => 'r 11',
"'-'" => 'r 11',
"'*'" => 'r 11',
"'/'" => 'r 11',
"'^'" => 'r 11',
"'%'" => 'r 11',
"')'" => 'r 11',
'#' => 'r 11'
),
array(
'num' => 's 3',
'var' => 's 4',
'exp' => 's 21',
"'+'" => 's 16',
"'-'" => 's 18',
"'('" => 's 20'
),
array(
"'+'" => 's 2',
"'-'" => 's 6',
"'*'" => 's 8',
"'/'" => 's 10',
"'^'" => 's 12',
"'%'" => 's 14',
"')'" => 's 22'
),
array(
"'%'" => 'r 12',
"'^'" => 'r 12',
"'/'" => 'r 12',
"'*'" => 'r 12',
"'-'" => 'r 12',
"'+'" => 'r 12',
"')'" => 'r 12',
'#' => 'r 12'
),
array(
"'='" => 's 24',
"'+'" => 'r 3',
"'-'" => 'r 3',
"'*'" => 'r 3',
"'/'" => 'r 3',
"'^'" => 'r 3',
"'%'" => 'r 3',
'#' => 'r 3'
),
array(
'exp' => 's 25',
'num' => 's 3',
'var' => 's 4',
"'+'" => 's 16',
"'-'" => 's 18',
"'('" => 's 20'
),
array(
"'+'" => 's 2',
"'-'" => 's 6',
"'*'" => 's 8',
"'/'" => 's 10',
"'^'" => 's 12',
"'%'" => 's 14',
'#' => 'r 1'
),
array(
'#' => 'r 13'
)
);
function reduce_0_stmt_1($tokens, &$result) {
// (0) stmt := exp
$result = reset($tokens);
echo " -> "; echo $tokens[0]; echo "\n";
}
function reduce_1_stmt_2($tokens, &$result) {
// (1) stmt := var '=' exp
$result = reset($tokens);
$v = &$tokens[0];
$e = &$tokens[2];
echo "$v = $e\n";
set_variable($v, $e);
}
function reduce_2_exp_1($tokens, &$result) {
// (2) exp := num
$result = reset($tokens);
}
function reduce_3_exp_2($tokens, &$result) {
// (3) exp := var
$result = reset($tokens);
$result = get_variable($tokens[0]);
}
function reduce_4_exp_3($tokens, &$result) {
// (4) exp := exp '+' exp
$result = reset($tokens);
$result = '(' . $tokens[0] . ' + ' . $tokens[2] . ')';
}
function reduce_5_exp_4($tokens, &$result) {
// (5) exp := exp '-' exp
$result = reset($tokens);
$result = '(' . $tokens[0] . ' - ' . $tokens[2] . ')';
}
function reduce_6_exp_5($tokens, &$result) {
// (6) exp := exp '*' exp
$result = reset($tokens);
$result = '(' . $tokens[0] . ' * ' . $tokens[2] . ')';
}
function reduce_7_exp_6($tokens, &$result) {
// (7) exp := exp '/' exp
$result = reset($tokens);
$result = '(' . $tokens[0] . ' / ' . $tokens[2] . ')';
}
function reduce_8_exp_7($tokens, &$result) {
// (8) exp := exp '^' exp
$result = reset($tokens);
$result = '(' . $tokens[0] . ' ^ ' . $tokens[2] . ')';
}
function reduce_9_exp_8($tokens, &$result) {
// (9) exp := exp '%' exp
$result = reset($tokens);
$result = '(' . $tokens[0] . ' % ' . $tokens[2] . ')';
}
function reduce_10_exp_9($tokens, &$result) {
// (10) exp := '+' exp
$result = reset($tokens);
$result = '(+ ' . $tokens[1] . ')';
}
function reduce_11_exp_10($tokens, &$result) {
// (11) exp := '-' exp
$result = reset($tokens);
$result = '(- ' . $tokens[1] . ')';
}
function reduce_12_exp_11($tokens, &$result) {
// (12) exp := '(' exp ')'
$result = $tokens[1];
}
function reduce_13_start_1($tokens, &$result) {
// (13) 'start' := stmt
$result = reset($tokens);
}
public $method = array(
'reduce_0_stmt_1',
'reduce_1_stmt_2',
'reduce_2_exp_1',
'reduce_3_exp_2',
'reduce_4_exp_3',
'reduce_5_exp_4',
'reduce_6_exp_5',
'reduce_7_exp_6',
'reduce_8_exp_7',
'reduce_9_exp_8',
'reduce_10_exp_9',
'reduce_11_exp_10',
'reduce_12_exp_11',
'reduce_13_start_1'
);
public $a = array(
array(
'symbol' => 'stmt',
'len' => 1,
'replace' => true
),
array(
'symbol' => 'stmt',
'len' => 3,
'replace' => true
),
array(
'symbol' => 'exp',
'len' => 1,
'replace' => true
),
array(
'symbol' => 'exp',
'len' => 1,
'replace' => true
),
array(
'symbol' => 'exp',
'len' => 3,
'replace' => true
),
array(
'symbol' => 'exp',
'len' => 3,
'replace' => true
),
array(
'symbol' => 'exp',
'len' => 3,
'replace' => true
),
array(
'symbol' => 'exp',
'len' => 3,
'replace' => true
),
array(
'symbol' => 'exp',
'len' => 3,
'replace' => true
),
array(
'symbol' => 'exp',
'len' => 3,
'replace' => true
),
array(
'symbol' => 'exp',
'len' => 2,
'replace' => true
),
array(
'symbol' => 'exp',
'len' => 2,
'replace' => true
),
array(
'symbol' => 'exp',
'len' => 3,
'replace' => true
),
array(
'symbol' => "'start'",
'len' => 1,
'replace' => true
)
);
}