Page MenuHomeWickedGov Phorge

ParserIntent.php
No OneTemporary

Size
42 KB
Referenced Files
None
Subscribers
None

ParserIntent.php

<?php
/*
* Generated by peggy 1.0.0 with phpeggy plugin
*
* https://peggyjs.org/
*/
namespace MediaWiki\Extension\Math\WikiTexVC;
/* Useful functions: */
/* chr_unicode - get unicode character from its char code */
if (!function_exists("MediaWiki\\Extension\\Math\\WikiTexVC\\chr_unicode")) {
function chr_unicode($code) {
return html_entity_decode("&#$code;", ENT_QUOTES, "UTF-8");
}
}
/* ord_unicode - get unicode char code from string */
if (!function_exists("MediaWiki\\Extension\\Math\\WikiTexVC\\ord_unicode")) {
function ord_unicode($character) {
if (strlen($character) === 1) {
return ord($character);
}
$json = json_encode($character);
$utf16_1 = hexdec(substr($json, 3, 4));
if (substr($json, 7, 2) === "\u") {
$utf16_2 = hexdec(substr($json, 9, 4));
return 0x10000 + (($utf16_1 & 0x3ff) << 10) + ($utf16_2 & 0x3ff);
} else {
return $utf16_1;
}
}
}
/* peg_regex_test - multibyte regex test */
if (!function_exists("MediaWiki\\Extension\\Math\\WikiTexVC\\peg_regex_test")) {
function peg_regex_test($pattern, $string) {
if (substr($pattern, -1) == "i") {
return mb_eregi(substr($pattern, 1, -2), $string);
} else {
return mb_ereg(substr($pattern, 1, -1), $string);
}
}
}
class ParserIntent {
private $peg_currPos = 0;
private $peg_reportedPos = 0;
private $peg_cachedPos = 0;
private $peg_cachedPosDetails = array('line' => 1, 'column' => 1, 'seenCR' => false );
private $peg_maxFailPos = 0;
private $peg_maxFailExpected = array();
private $peg_silentFails = 0;
private $input = array();
private $input_length = 0;
public $peg_cache = array();
private function cleanup_state() {
$this->peg_currPos = 0;
$this->peg_reportedPos = 0;
$this->peg_cachedPos = 0;
$this->peg_cachedPosDetails = array('line' => 1, 'column' => 1, 'seenCR' => false );
$this->peg_maxFailPos = 0;
$this->peg_maxFailExpected = array();
$this->peg_silentFails = 0;
$this->input = array();
$this->input_length = 0;
$this->peg_cache = array();
}
private function input_substr($start, $length) {
if ($length === 1 && $start < $this->input_length) {
return $this->input[$start];
}
$substr = '';
$max = min($start + $length, $this->input_length);
for ($i = $start; $i < $max; $i++) {
$substr .= $this->input[$i];
}
return $substr;
}
private function text() {
return $this->input_substr($this->peg_reportedPos, $this->peg_currPos - $this->peg_reportedPos);
}
private function offset() {
return $this->peg_reportedPos;
}
private function line() {
$compute_pd = $this->peg_computePosDetails($this->peg_reportedPos);
return $compute_pd["line"];
}
private function column() {
$compute_pd = $this->peg_computePosDetails($this->peg_reportedPos);
return $compute_pd["column"];
}
private function expected($description) {
throw $this->peg_buildException(
null,
array(array("type" => "other", "description" => $description )),
$this->peg_reportedPos
);
}
private function error($message) {
throw $this->peg_buildException($message, null, $this->peg_reportedPos);
}
private function peg_advancePos(&$details, $startPos, $endPos) {
for ($p = $startPos; $p < $endPos; $p++) {
$ch = $this->input_substr($p, 1);
if ($ch === "\n") {
if (!$details["seenCR"]) { $details["line"]++; }
$details["column"] = 1;
$details["seenCR"] = false;
} else if ($ch === "\r" || $ch === "\u2028" || $ch === "\u2029") {
$details["line"]++;
$details["column"] = 1;
$details["seenCR"] = true;
} else {
$details["column"]++;
$details["seenCR"] = false;
}
}
}
private function peg_computePosDetails($pos) {
if ($this->peg_cachedPos !== $pos) {
if ($this->peg_cachedPos > $pos) {
$this->peg_cachedPos = 0;
$this->peg_cachedPosDetails = array( "line" => 1, "column" => 1, "seenCR" => false );
}
$this->peg_advancePos($this->peg_cachedPosDetails, $this->peg_cachedPos, $pos);
$this->peg_cachedPos = $pos;
}
return $this->peg_cachedPosDetails;
}
private function peg_fail($expected) {
if ($this->peg_currPos < $this->peg_maxFailPos) { return; }
if ($this->peg_currPos > $this->peg_maxFailPos) {
$this->peg_maxFailPos = $this->peg_currPos;
$this->peg_maxFailExpected = array();
}
$this->peg_maxFailExpected[] = $expected;
}
private function peg_buildException_expectedComparator($a, $b) {
if ($a["description"] < $b["description"]) {
return -1;
} else if ($a["description"] > $b["description"]) {
return 1;
} else {
return 0;
}
}
private function peg_buildException($message, $expected, $pos) {
$posDetails = $this->peg_computePosDetails($pos);
$found = $pos < $this->input_length ? $this->input[$pos] : null;
if ($expected !== null) {
usort($expected, array($this, "peg_buildException_expectedComparator"));
$i = 1;
while ($i < count($expected)) {
if ($expected[$i - 1] === $expected[$i]) {
array_splice($expected, $i, 1);
} else {
$i++;
}
}
}
if ($message === null) {
$expectedDescs = array_fill(0, count($expected), null);
for ($i = 0; $i < count($expected); $i++) {
$expectedDescs[$i] = $expected[$i]["description"];
}
$expectedDesc = count($expected) > 1
? join(", ", array_slice($expectedDescs, 0, -1))
. " or "
. $expectedDescs[count($expected) - 1]
: $expectedDescs[0];
$foundDesc = $found ? json_encode($found) : "end of input";
$message = "Expected " . $expectedDesc . " but " . $foundDesc . " found.";
}
return new SyntaxError(
$message,
$expected,
$found,
$pos,
$posDetails["line"],
$posDetails["column"]
);
}
private $peg_FAILED;
private $peg_c0;
private $peg_c1;
private $peg_c2;
private $peg_c3;
private $peg_c4;
private $peg_c5;
private $peg_c6;
private $peg_c7;
private $peg_c8;
private $peg_c9;
private $peg_c10;
private $peg_c11;
private $peg_c12;
private $peg_c13;
private $peg_c14;
private $peg_c15;
private $peg_c16;
private $peg_c17;
private $peg_c18;
private $peg_c19;
private $peg_c20;
private $peg_c21;
private $peg_c22;
private $peg_c23;
private $peg_c24;
private $peg_c25;
private $peg_c26;
private $peg_c27;
private $peg_c28;
private $peg_c29;
private $peg_c30;
private $peg_c31;
private $peg_c32;
private $peg_c33;
private $peg_c34;
private $peg_c35;
private $peg_c36;
private $peg_c37;
private $peg_c38;
private $peg_c39;
private $peg_c40;
private $peg_c41;
private $peg_c42;
private $peg_c43;
private $peg_c44;
private $peg_c45;
private $peg_c46;
private $peg_c47;
private $peg_c48;
private $peg_c49;
private $peg_c50;
private $peg_c51;
private $peg_c52;
private $peg_c53;
private function peg_f0() {
return $this->text();
}
private function peg_f1($sign, $intPart, $fracPart, $hint) {
$intPartS = implode($intPart ?? []);
$fracPartS = implode($fracPart[1] ?? []);
$value = $sign ?? "";
$value .= $intPartS;
$value .= isset($fracPart) ? ("." . $fracPartS ) : "";
return ["type" => "number", "value" => $value, "hint"=>$hint];
}
private function peg_f2() {
return substr($this->text(),1);
}
private function peg_f3($intent, $hint, $args) {
$argsF = [];
foreach ($args as $arg) {
$argsF[] = $arg[2];
}
$returnObj = [
"type" => "application",
"intent" => $intent,
"hint" => isset($hint) ? $hint : null,
"arguments" => $argsF
];
return $returnObj;
}
private function peg_f4($first, $rest) {
$args = [$first];
foreach ($rest as $arg) {
$args[] = $arg[2];
}
return $args;
}
private function peg_f5($hintType) {
return $hintType;
}
private function peg_f6() { return $this->text(); }
private function peg_f7() {return " "; }
private function peg_parsestart() {
$key = $this->peg_currPos * 13 + 0;
$cached = isset($this->peg_cache[$key]) ? $this->peg_cache[$key] : null;
if ($cached) {
$this->peg_currPos = $cached["nextPos"];
return $cached["result"];
}
$s0 = $this->peg_parseapplication();
if ($s0 === $this->peg_FAILED) {
$s0 = $this->peg_parseintent();
}
$this->peg_cache[$key] = array ("nextPos" => $this->peg_currPos, "result" => $s0 );
return $s0;
}
private function peg_parseintent() {
$key = $this->peg_currPos * 13 + 1;
$cached = isset($this->peg_cache[$key]) ? $this->peg_cache[$key] : null;
if ($cached) {
$this->peg_currPos = $cached["nextPos"];
return $cached["result"];
}
$s0 = $this->peg_parseconcept_or_literal();
if ($s0 === $this->peg_FAILED) {
$s0 = $this->peg_parsenumber();
if ($s0 === $this->peg_FAILED) {
$s0 = $this->peg_parsereference();
if ($s0 === $this->peg_FAILED) {
$s0 = $this->peg_parsestructure();
}
}
}
$this->peg_cache[$key] = array ("nextPos" => $this->peg_currPos, "result" => $s0 );
return $s0;
}
private function peg_parseconcept_or_literal() {
$key = $this->peg_currPos * 13 + 2;
$cached = isset($this->peg_cache[$key]) ? $this->peg_cache[$key] : null;
if ($cached) {
$this->peg_currPos = $cached["nextPos"];
return $cached["result"];
}
$s0 = $this->peg_currPos;
$s1 = $this->peg_parseNCName();
if ($s1 !== $this->peg_FAILED) {
$this->peg_reportedPos = $s0;
$s1 = $this->peg_f0();
}
$s0 = $s1;
$this->peg_cache[$key] = array ("nextPos" => $this->peg_currPos, "result" => $s0 );
return $s0;
}
private function peg_parsenumber() {
$key = $this->peg_currPos * 13 + 3;
$cached = isset($this->peg_cache[$key]) ? $this->peg_cache[$key] : null;
if ($cached) {
$this->peg_currPos = $cached["nextPos"];
return $cached["result"];
}
$s0 = $this->peg_currPos;
if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c0) {
$s1 = $this->peg_c0;
$this->peg_currPos++;
} else {
$s1 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c1);
}
}
if ($s1 === $this->peg_FAILED) {
$s1 = null;
}
if ($s1 !== $this->peg_FAILED) {
$s2 = $this->peg_parsedigits();
if ($s2 !== $this->peg_FAILED) {
$s3 = $this->peg_currPos;
if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c2) {
$s4 = $this->peg_c2;
$this->peg_currPos++;
} else {
$s4 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c3);
}
}
if ($s4 !== $this->peg_FAILED) {
$s5 = $this->peg_parsedigits();
if ($s5 !== $this->peg_FAILED) {
$s4 = array($s4, $s5);
$s3 = $s4;
} else {
$this->peg_currPos = $s3;
$s3 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s3;
$s3 = $this->peg_FAILED;
}
if ($s3 === $this->peg_FAILED) {
$s3 = null;
}
if ($s3 !== $this->peg_FAILED) {
$s4 = $this->peg_parsehint();
if ($s4 === $this->peg_FAILED) {
$s4 = null;
}
if ($s4 !== $this->peg_FAILED) {
$this->peg_reportedPos = $s0;
$s1 = $this->peg_f1($s1, $s2, $s3, $s4);
$s0 = $s1;
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
$this->peg_cache[$key] = array ("nextPos" => $this->peg_currPos, "result" => $s0 );
return $s0;
}
private function peg_parsedigits() {
$key = $this->peg_currPos * 13 + 4;
$cached = isset($this->peg_cache[$key]) ? $this->peg_cache[$key] : null;
if ($cached) {
$this->peg_currPos = $cached["nextPos"];
return $cached["result"];
}
$s0 = array();
$s1 = $this->peg_parsedigit();
if ($s1 !== $this->peg_FAILED) {
while ($s1 !== $this->peg_FAILED) {
$s0[] = $s1;
$s1 = $this->peg_parsedigit();
}
} else {
$s0 = $this->peg_FAILED;
}
$this->peg_cache[$key] = array ("nextPos" => $this->peg_currPos, "result" => $s0 );
return $s0;
}
private function peg_parsedigit() {
$key = $this->peg_currPos * 13 + 5;
$cached = isset($this->peg_cache[$key]) ? $this->peg_cache[$key] : null;
if ($cached) {
$this->peg_currPos = $cached["nextPos"];
return $cached["result"];
}
if (peg_regex_test($this->peg_c4, $this->input_substr($this->peg_currPos, 1))) {
$s0 = $this->input_substr($this->peg_currPos, 1);
$this->peg_currPos++;
} else {
$s0 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c5);
}
}
$this->peg_cache[$key] = array ("nextPos" => $this->peg_currPos, "result" => $s0 );
return $s0;
}
private function peg_parsereference() {
$key = $this->peg_currPos * 13 + 6;
$cached = isset($this->peg_cache[$key]) ? $this->peg_cache[$key] : null;
if ($cached) {
$this->peg_currPos = $cached["nextPos"];
return $cached["result"];
}
$s0 = $this->peg_currPos;
if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c6) {
$s1 = $this->peg_c6;
$this->peg_currPos++;
} else {
$s1 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c7);
}
}
if ($s1 !== $this->peg_FAILED) {
$s2 = $this->peg_parseNCName();
if ($s2 !== $this->peg_FAILED) {
$this->peg_reportedPos = $s0;
$s1 = $this->peg_f2();
$s0 = $s1;
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
$this->peg_cache[$key] = array ("nextPos" => $this->peg_currPos, "result" => $s0 );
return $s0;
}
private function peg_parsestructure() {
$key = $this->peg_currPos * 13 + 7;
$cached = isset($this->peg_cache[$key]) ? $this->peg_cache[$key] : null;
if ($cached) {
$this->peg_currPos = $cached["nextPos"];
return $cached["result"];
}
$s0 = $this->peg_currPos;
if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c8) {
$s1 = $this->peg_c8;
$this->peg_currPos++;
} else {
$s1 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c9);
}
}
if ($s1 !== $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 6) === $this->peg_c10) {
$s2 = $this->peg_c10;
$this->peg_currPos += 6;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c11);
}
}
if ($s2 === $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 9) === $this->peg_c12) {
$s2 = $this->peg_c12;
$this->peg_currPos += 9;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c13);
}
}
if ($s2 === $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 9) === $this->peg_c14) {
$s2 = $this->peg_c14;
$this->peg_currPos += 9;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c15);
}
}
if ($s2 === $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 6) === $this->peg_c16) {
$s2 = $this->peg_c16;
$this->peg_currPos += 6;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c17);
}
}
if ($s2 === $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 9) === $this->peg_c18) {
$s2 = $this->peg_c18;
$this->peg_currPos += 9;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c19);
}
}
if ($s2 === $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 16) === $this->peg_c20) {
$s2 = $this->peg_c20;
$this->peg_currPos += 16;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c21);
}
}
if ($s2 === $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 16) === $this->peg_c22) {
$s2 = $this->peg_c22;
$this->peg_currPos += 16;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c23);
}
}
if ($s2 === $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 17) === $this->peg_c24) {
$s2 = $this->peg_c24;
$this->peg_currPos += 17;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c25);
}
}
}
}
}
}
}
}
}
if ($s2 !== $this->peg_FAILED) {
$this->peg_reportedPos = $s0;
$s1 = $this->peg_f2();
$s0 = $s1;
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
$this->peg_cache[$key] = array ("nextPos" => $this->peg_currPos, "result" => $s0 );
return $s0;
}
private function peg_parseapplication() {
$key = $this->peg_currPos * 13 + 8;
$cached = isset($this->peg_cache[$key]) ? $this->peg_cache[$key] : null;
if ($cached) {
$this->peg_currPos = $cached["nextPos"];
return $cached["result"];
}
$s0 = $this->peg_currPos;
$s1 = $this->peg_parseintent();
if ($s1 !== $this->peg_FAILED) {
$s2 = $this->peg_parsehint();
if ($s2 === $this->peg_FAILED) {
$s2 = null;
}
if ($s2 !== $this->peg_FAILED) {
$s3 = array();
$s4 = $this->peg_currPos;
if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c26) {
$s5 = $this->peg_c26;
$this->peg_currPos++;
} else {
$s5 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c27);
}
}
if ($s5 !== $this->peg_FAILED) {
$s6 = $this->peg_parseWS();
if ($s6 === $this->peg_FAILED) {
$s6 = null;
}
if ($s6 !== $this->peg_FAILED) {
$s7 = $this->peg_parsearguments();
if ($s7 === $this->peg_FAILED) {
$s7 = null;
}
if ($s7 !== $this->peg_FAILED) {
$s8 = $this->peg_parseWS();
if ($s8 === $this->peg_FAILED) {
$s8 = null;
}
if ($s8 !== $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c28) {
$s9 = $this->peg_c28;
$this->peg_currPos++;
} else {
$s9 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c29);
}
}
if ($s9 !== $this->peg_FAILED) {
$s5 = array($s5, $s6, $s7, $s8, $s9);
$s4 = $s5;
} else {
$this->peg_currPos = $s4;
$s4 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s4;
$s4 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s4;
$s4 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s4;
$s4 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s4;
$s4 = $this->peg_FAILED;
}
if ($s4 !== $this->peg_FAILED) {
while ($s4 !== $this->peg_FAILED) {
$s3[] = $s4;
$s4 = $this->peg_currPos;
if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c26) {
$s5 = $this->peg_c26;
$this->peg_currPos++;
} else {
$s5 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c27);
}
}
if ($s5 !== $this->peg_FAILED) {
$s6 = $this->peg_parseWS();
if ($s6 === $this->peg_FAILED) {
$s6 = null;
}
if ($s6 !== $this->peg_FAILED) {
$s7 = $this->peg_parsearguments();
if ($s7 === $this->peg_FAILED) {
$s7 = null;
}
if ($s7 !== $this->peg_FAILED) {
$s8 = $this->peg_parseWS();
if ($s8 === $this->peg_FAILED) {
$s8 = null;
}
if ($s8 !== $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c28) {
$s9 = $this->peg_c28;
$this->peg_currPos++;
} else {
$s9 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c29);
}
}
if ($s9 !== $this->peg_FAILED) {
$s5 = array($s5, $s6, $s7, $s8, $s9);
$s4 = $s5;
} else {
$this->peg_currPos = $s4;
$s4 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s4;
$s4 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s4;
$s4 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s4;
$s4 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s4;
$s4 = $this->peg_FAILED;
}
}
} else {
$s3 = $this->peg_FAILED;
}
if ($s3 !== $this->peg_FAILED) {
$this->peg_reportedPos = $s0;
$s1 = $this->peg_f3($s1, $s2, $s3);
$s0 = $s1;
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
$this->peg_cache[$key] = array ("nextPos" => $this->peg_currPos, "result" => $s0 );
return $s0;
}
private function peg_parsearguments() {
$key = $this->peg_currPos * 13 + 9;
$cached = isset($this->peg_cache[$key]) ? $this->peg_cache[$key] : null;
if ($cached) {
$this->peg_currPos = $cached["nextPos"];
return $cached["result"];
}
$s0 = $this->peg_currPos;
$s1 = $this->peg_parseWS();
if ($s1 === $this->peg_FAILED) {
$s1 = null;
}
if ($s1 !== $this->peg_FAILED) {
$s2 = $this->peg_parsestart();
if ($s2 !== $this->peg_FAILED) {
$s3 = $this->peg_parseWS();
if ($s3 === $this->peg_FAILED) {
$s3 = null;
}
if ($s3 !== $this->peg_FAILED) {
$s4 = array();
$s5 = $this->peg_currPos;
if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c30) {
$s6 = $this->peg_c30;
$this->peg_currPos++;
} else {
$s6 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c31);
}
}
if ($s6 !== $this->peg_FAILED) {
$s7 = $this->peg_parseWS();
if ($s7 === $this->peg_FAILED) {
$s7 = null;
}
if ($s7 !== $this->peg_FAILED) {
$s8 = $this->peg_parsestart();
if ($s8 !== $this->peg_FAILED) {
$s9 = $this->peg_parseWS();
if ($s9 === $this->peg_FAILED) {
$s9 = null;
}
if ($s9 !== $this->peg_FAILED) {
$s6 = array($s6, $s7, $s8, $s9);
$s5 = $s6;
} else {
$this->peg_currPos = $s5;
$s5 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s5;
$s5 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s5;
$s5 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s5;
$s5 = $this->peg_FAILED;
}
while ($s5 !== $this->peg_FAILED) {
$s4[] = $s5;
$s5 = $this->peg_currPos;
if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c30) {
$s6 = $this->peg_c30;
$this->peg_currPos++;
} else {
$s6 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c31);
}
}
if ($s6 !== $this->peg_FAILED) {
$s7 = $this->peg_parseWS();
if ($s7 === $this->peg_FAILED) {
$s7 = null;
}
if ($s7 !== $this->peg_FAILED) {
$s8 = $this->peg_parsestart();
if ($s8 !== $this->peg_FAILED) {
$s9 = $this->peg_parseWS();
if ($s9 === $this->peg_FAILED) {
$s9 = null;
}
if ($s9 !== $this->peg_FAILED) {
$s6 = array($s6, $s7, $s8, $s9);
$s5 = $s6;
} else {
$this->peg_currPos = $s5;
$s5 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s5;
$s5 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s5;
$s5 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s5;
$s5 = $this->peg_FAILED;
}
}
if ($s4 !== $this->peg_FAILED) {
$this->peg_reportedPos = $s0;
$s1 = $this->peg_f4($s2, $s4);
$s0 = $s1;
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
$this->peg_cache[$key] = array ("nextPos" => $this->peg_currPos, "result" => $s0 );
return $s0;
}
private function peg_parsehint() {
$key = $this->peg_currPos * 13 + 10;
$cached = isset($this->peg_cache[$key]) ? $this->peg_cache[$key] : null;
if ($cached) {
$this->peg_currPos = $cached["nextPos"];
return $cached["result"];
}
$s0 = $this->peg_currPos;
if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c32) {
$s1 = $this->peg_c32;
$this->peg_currPos++;
} else {
$s1 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c33);
}
}
if ($s1 === $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c8) {
$s1 = $this->peg_c8;
$this->peg_currPos++;
} else {
$s1 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c9);
}
}
}
if ($s1 !== $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 6) === $this->peg_c34) {
$s2 = $this->peg_c34;
$this->peg_currPos += 6;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c35);
}
}
if ($s2 === $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 5) === $this->peg_c36) {
$s2 = $this->peg_c36;
$this->peg_currPos += 5;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c37);
}
}
if ($s2 === $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 7) === $this->peg_c38) {
$s2 = $this->peg_c38;
$this->peg_currPos += 7;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c39);
}
}
if ($s2 === $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 8) === $this->peg_c40) {
$s2 = $this->peg_c40;
$this->peg_currPos += 8;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c41);
}
}
if ($s2 === $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 6) === $this->peg_c42) {
$s2 = $this->peg_c42;
$this->peg_currPos += 6;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c43);
}
}
if ($s2 === $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 13) === $this->peg_c44) {
$s2 = $this->peg_c44;
$this->peg_currPos += 13;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c45);
}
}
if ($s2 === $this->peg_FAILED) {
if ($this->input_substr($this->peg_currPos, 15) === $this->peg_c46) {
$s2 = $this->peg_c46;
$this->peg_currPos += 15;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c47);
}
}
}
}
}
}
}
}
if ($s2 !== $this->peg_FAILED) {
$this->peg_reportedPos = $s0;
$s1 = $this->peg_f5($s2);
$s0 = $s1;
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
$this->peg_cache[$key] = array ("nextPos" => $this->peg_currPos, "result" => $s0 );
return $s0;
}
private function peg_parseNCName() {
$key = $this->peg_currPos * 13 + 11;
$cached = isset($this->peg_cache[$key]) ? $this->peg_cache[$key] : null;
if ($cached) {
$this->peg_currPos = $cached["nextPos"];
return $cached["result"];
}
$s0 = $this->peg_currPos;
$s1 = $this->peg_currPos;
$this->peg_silentFails++;
if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c8) {
$s2 = $this->peg_c8;
$this->peg_currPos++;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c9);
}
}
$this->peg_silentFails--;
if ($s2 === $this->peg_FAILED) {
$s1 = null;
} else {
$this->peg_currPos = $s1;
$s1 = $this->peg_FAILED;
}
if ($s1 !== $this->peg_FAILED) {
if (peg_regex_test($this->peg_c48, $this->input_substr($this->peg_currPos, 1))) {
$s2 = $this->input_substr($this->peg_currPos, 1);
$this->peg_currPos++;
} else {
$s2 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c49);
}
}
if ($s2 !== $this->peg_FAILED) {
$s3 = array();
if (peg_regex_test($this->peg_c50, $this->input_substr($this->peg_currPos, 1))) {
$s4 = $this->input_substr($this->peg_currPos, 1);
$this->peg_currPos++;
} else {
$s4 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c51);
}
}
while ($s4 !== $this->peg_FAILED) {
$s3[] = $s4;
if (peg_regex_test($this->peg_c50, $this->input_substr($this->peg_currPos, 1))) {
$s4 = $this->input_substr($this->peg_currPos, 1);
$this->peg_currPos++;
} else {
$s4 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c51);
}
}
}
if ($s3 !== $this->peg_FAILED) {
$this->peg_reportedPos = $s0;
$s1 = $this->peg_f6();
$s0 = $s1;
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
} else {
$this->peg_currPos = $s0;
$s0 = $this->peg_FAILED;
}
$this->peg_cache[$key] = array ("nextPos" => $this->peg_currPos, "result" => $s0 );
return $s0;
}
private function peg_parseWS() {
$key = $this->peg_currPos * 13 + 12;
$cached = isset($this->peg_cache[$key]) ? $this->peg_cache[$key] : null;
if ($cached) {
$this->peg_currPos = $cached["nextPos"];
return $cached["result"];
}
$s0 = $this->peg_currPos;
if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c52) {
$s1 = $this->peg_c52;
$this->peg_currPos++;
} else {
$s1 = $this->peg_FAILED;
if ($this->peg_silentFails === 0) {
$this->peg_fail($this->peg_c53);
}
}
if ($s1 !== $this->peg_FAILED) {
$this->peg_reportedPos = $s0;
$s1 = $this->peg_f7();
}
$s0 = $s1;
$this->peg_cache[$key] = array ("nextPos" => $this->peg_currPos, "result" => $s0 );
return $s0;
}
public function parse($input) {
$arguments = func_get_args();
$options = count($arguments) > 1 ? $arguments[1] : array();
$this->cleanup_state();
if (is_array($input)) {
$this->input = $input;
} else {
preg_match_all("/./us", $input, $match);
$this->input = $match[0];
}
$this->input_length = count($this->input);
$old_regex_encoding = mb_regex_encoding();
mb_regex_encoding("UTF-8");
$this->peg_FAILED = new \stdClass;
$this->peg_c0 = "-";
$this->peg_c1 = array( "type" => "literal", "value" => "-", "description" => "\"-\"" );
$this->peg_c2 = ".";
$this->peg_c3 = array( "type" => "literal", "value" => ".", "description" => "\".\"" );
$this->peg_c4 = "/^[0-9]/";
$this->peg_c5 = array( "type" => "class", "value" => "[0-9]", "description" => "[0-9]" );
$this->peg_c6 = "$";
$this->peg_c7 = array( "type" => "literal", "value" => "$", "description" => "\"$\"" );
$this->peg_c8 = ":";
$this->peg_c9 = array( "type" => "literal", "value" => ":", "description" => "\":\"" );
$this->peg_c10 = "common";
$this->peg_c11 = array( "type" => "literal", "value" => "common", "description" => "\"common\"" );
$this->peg_c12 = "structure";
$this->peg_c13 = array( "type" => "literal", "value" => "structure", "description" => "\"structure\"" );
$this->peg_c14 = "chemistry";
$this->peg_c15 = array( "type" => "literal", "value" => "chemistry", "description" => "\"chemistry\"" );
$this->peg_c16 = "matrix";
$this->peg_c17 = array( "type" => "literal", "value" => "matrix", "description" => "\"matrix\"" );
$this->peg_c18 = "equations";
$this->peg_c19 = array( "type" => "literal", "value" => "equations", "description" => "\"equations\"" );
$this->peg_c20 = "chemical-element";
$this->peg_c21 = array( "type" => "literal", "value" => "chemical-element", "description" => "\"chemical-element\"" );
$this->peg_c22 = "chemical-formula";
$this->peg_c23 = array( "type" => "literal", "value" => "chemical-formula", "description" => "\"chemical-formula\"" );
$this->peg_c24 = "chemical-equation";
$this->peg_c25 = array( "type" => "literal", "value" => "chemical-equation", "description" => "\"chemical-equation\"" );
$this->peg_c26 = "(";
$this->peg_c27 = array( "type" => "literal", "value" => "(", "description" => "\"(\"" );
$this->peg_c28 = ")";
$this->peg_c29 = array( "type" => "literal", "value" => ")", "description" => "\")\"" );
$this->peg_c30 = ",";
$this->peg_c31 = array( "type" => "literal", "value" => ",", "description" => "\",\"" );
$this->peg_c32 = "@";
$this->peg_c33 = array( "type" => "literal", "value" => "@", "description" => "\"@\"" );
$this->peg_c34 = "prefix";
$this->peg_c35 = array( "type" => "literal", "value" => "prefix", "description" => "\"prefix\"" );
$this->peg_c36 = "infix";
$this->peg_c37 = array( "type" => "literal", "value" => "infix", "description" => "\"infix\"" );
$this->peg_c38 = "postfix";
$this->peg_c39 = array( "type" => "literal", "value" => "postfix", "description" => "\"postfix\"" );
$this->peg_c40 = "function";
$this->peg_c41 = array( "type" => "literal", "value" => "function", "description" => "\"function\"" );
$this->peg_c42 = "silent";
$this->peg_c43 = array( "type" => "literal", "value" => "silent", "description" => "\"silent\"" );
$this->peg_c44 = "decimal-comma";
$this->peg_c45 = array( "type" => "literal", "value" => "decimal-comma", "description" => "\"decimal-comma\"" );
$this->peg_c46 = "thousands-comma";
$this->peg_c47 = array( "type" => "literal", "value" => "thousands-comma", "description" => "\"thousands-comma\"" );
$this->peg_c48 = "/^[a-zA-Z_]/";
$this->peg_c49 = array( "type" => "class", "value" => "[a-zA-Z_]", "description" => "[a-zA-Z_]" );
$this->peg_c50 = "/^[a-zA-Z0-9._-]/";
$this->peg_c51 = array( "type" => "class", "value" => "[a-zA-Z0-9._-]", "description" => "[a-zA-Z0-9._-]" );
$this->peg_c52 = " ";
$this->peg_c53 = array( "type" => "literal", "value" => " ", "description" => "\" \"" );
$peg_startRuleFunctions = array( 'start' => array($this, "peg_parsestart") );
$peg_startRuleFunction = array($this, "peg_parsestart");
if (isset($options["startRule"])) {
if (!(isset($peg_startRuleFunctions[$options["startRule"]]))) {
throw new \Exception("Can't start parsing from rule \"" . $options["startRule"] . "\".");
}
$peg_startRuleFunction = $peg_startRuleFunctions[$options["startRule"]];
}
$peg_result = call_user_func($peg_startRuleFunction);
$this->peg_cache = array();
mb_regex_encoding($old_regex_encoding);
if ($peg_result !== $this->peg_FAILED && $this->peg_currPos === $this->input_length) {
$this->cleanup_state(); // Free up memory
return $peg_result;
} else {
if ($peg_result !== $this->peg_FAILED && $this->peg_currPos < $this->input_length) {
$this->peg_fail(array("type" => "end", "description" => "end of input" ));
}
$exception = $this->peg_buildException(null, $this->peg_maxFailExpected, $this->peg_maxFailPos);
$this->cleanup_state(); // Free up memory
throw $exception;
}
}
};

File Metadata

Mime Type
text/x-php
Expires
Sat, Oct 3, 12:52 (2 d, 16 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
06/6f/d063fd6ae52f2d534d50d6ded2a6
Default Alt Text
ParserIntent.php (42 KB)

Event Timeline