From bb16317a1242d115b235f77a8473c0aad237c5b2 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 26 Sep 2017 17:44:18 +0000 Subject: [PATCH] Refine examples git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@343150 c90b9560-bf6c-de11-be94-00142212c4b1 --- reference/parle/examples.xml | 38 ++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/reference/parle/examples.xml b/reference/parle/examples.xml index 299d414c3b..ff0665dec0 100644 --- a/reference/parle/examples.xml +++ b/reference/parle/examples.xml @@ -12,17 +12,18 @@ id */ $token = array( - "EOI" => 0, "COMMA" => 1, "CRLF" => 2, "DECIMAL" => 3, ); /* id => name */ -$token_rev = array_flip($token); +$tokenIdToName = array_flip($token); $lex = new Lexer; $lex->push("[\x2c]", $token["COMMA"]); @@ -42,7 +43,7 @@ do { throw new LexerException("Unknown token '{$tok->value}' at offset {$lex->marker}."); } - echo "TOKEN: ", $token_rev[$tok->id], PHP_EOL; + echo "TOKEN: ", $tokenIdToName[$tok->id], PHP_EOL; } while (Token::EOI != $tok->id); ]]> @@ -91,11 +92,11 @@ $p->token("INTEGER"); $p->left("'+' '-' '*' '/'"); $p->push("start", "exp"); -$add_idx = $p->push("exp", "exp '+' exp"); -$sub_idx = $p->push("exp", "exp '-' exp"); -$mul_idx = $p->push("exp", "exp '*' exp"); -$div_idx = $p->push("exp", "exp '/' exp"); -$int_idx = $p->push("exp", "INTEGER"); +$prod_add = $p->push("exp", "exp '+' exp"); +$prod_sub = $p->push("exp", "exp '-' exp"); +$prod_mul = $p->push("exp", "exp '*' exp"); +$prod_div = $p->push("exp", "exp '/' exp"); +$p->push("exp", "INTEGER"); /* Production index unused. */ $p->build(); @@ -134,22 +135,22 @@ foreach ($exp as $in) { break; case Parser::ACTION_REDUCE: switch ($p->reduceId) { - case $add_idx: + case $prod_add: $l = $p->sigil(0); $r = $p->sigil(2); echo "$l + $r = " . ($l + $r) . "\n"; break; - case $sub_idx: + case $prod_sub: $l = $p->sigil(0); $r = $p->sigil(2); echo "$l - $r = " . ($l - $r) . "\n"; break; - case $mul_idx: + case $prod_mul: $l = $p->sigil(0); $r = $p->sigil(2); echo "$l * $r = " . ($l * $r) . "\n"; break; - case $div_idx: + case $prod_div: $l = $p->sigil(0); $r = $p->sigil(2); echo "$l / $r = " . ($l / $r) . "\n"; @@ -175,8 +176,8 @@ $p = new Parser; $p->token("WORD"); $p->push("START", "SENTENCE"); $p->push("SENTENCE", "WORDS"); -$words_idx = $p->push("WORDS", "WORDS WORD"); -$word_idx = $p->push("WORDS", "WORD"); +$prod_word_0 = $p->push("WORDS", "WORDS WORD"); +$prod_word_1 = $p->push("WORDS", "WORD"); $p->build(); $lex = new Lexer; @@ -193,20 +194,19 @@ do { break; case Parser::ACTION_SHIFT: case Parser::ACTION_GOTO: - case Parser::ACTION_ACCEPT: /* var_dump($p->trace());*/ break; case Parser::ACTION_REDUCE: $rid = $p->reduceId(); - if ($rid == $word_idx) { + if ($rid == $prod_word_1) { var_dump($p->sigil(0)); - } if ($rid == $words_idx) { + } if ($rid == $prod_word_0) { var_dump($p->sigil(1)); } break; } $p->advance(); -} while (Parser::ACTION_ERROR != $p->action && Parser::ACTION_ACCEPT != $p->action); +} while (Parser::ACTION_ACCEPT != $p->action); ]]>