Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 89 |
CRAP | |
0.00% |
0 / 1529 |
Grammar | |
0.00% |
0 / 1 |
|
0.00% |
0 / 89 |
259590 | |
0.00% |
0 / 1529 |
load | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 6 |
|||
addLines | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
a0 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a1 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a2 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a3 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a4 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a5 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a6 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a7 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a8 | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 5 |
|||
a9 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a10 | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 4 |
|||
a11 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
a12 | |
0.00% |
0 / 1 |
72 | |
0.00% |
0 / 14 |
|||
a13 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a14 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a15 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a16 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a17 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a18 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a19 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a20 | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 5 |
|||
a21 | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 1 |
|||
a22 | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 4 |
|||
a23 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a24 | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 4 |
|||
a25 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a26 | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 3 |
|||
a27 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a28 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a29 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a30 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a31 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a32 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a33 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
a34 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
a35 | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
parsetestfile | |
0.00% |
0 / 1 |
132 | |
0.00% |
0 / 33 |
|||
parsecomment_or_blank_line | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 18 |
|||
parseformat | |
0.00% |
0 / 1 |
272 | |
0.00% |
0 / 61 |
|||
parsetestfile_options | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 24 |
|||
parselined_chunk | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 19 |
|||
parsecomment | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 19 |
|||
discardwhitespace | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 10 |
|||
parseeol | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 11 |
|||
discardversion_keyword | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 6 |
|||
discardrest_of_line | |
0.00% |
0 / 1 |
56 | |
0.00% |
0 / 21 |
|||
parseoption_section | |
0.00% |
0 / 1 |
156 | |
0.00% |
0 / 36 |
|||
discardend_section | |
0.00% |
0 / 1 |
110 | |
0.00% |
0 / 29 |
|||
parsechunk | |
0.00% |
0 / 1 |
56 | |
0.00% |
0 / 22 |
|||
parserest_of_line | |
0.00% |
0 / 1 |
56 | |
0.00% |
0 / 21 |
|||
discardeol | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 11 |
|||
parseoption_list | |
0.00% |
0 / 1 |
110 | |
0.00% |
0 / 30 |
|||
parsearticle | |
0.00% |
0 / 1 |
72 | |
0.00% |
0 / 34 |
|||
parsetest | |
0.00% |
0 / 1 |
90 | |
0.00% |
0 / 33 |
|||
parsehooks | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 24 |
|||
parsefunctionhooks | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 24 |
|||
parseline | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 23 |
|||
parsean_option | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 14 |
|||
discardstart_article | |
0.00% |
0 / 1 |
110 | |
0.00% |
0 / 29 |
|||
discardstart_text | |
0.00% |
0 / 1 |
110 | |
0.00% |
0 / 29 |
|||
parsetext | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 12 |
|||
discardend_article | |
0.00% |
0 / 1 |
110 | |
0.00% |
0 / 29 |
|||
discardstart_test | |
0.00% |
0 / 1 |
110 | |
0.00% |
0 / 29 |
|||
parsesection | |
0.00% |
0 / 1 |
650 | |
0.00% |
0 / 93 |
|||
parseconfig_section | |
0.00% |
0 / 1 |
156 | |
0.00% |
0 / 36 |
|||
discardstart_hooks | |
0.00% |
0 / 1 |
156 | |
0.00% |
0 / 35 |
|||
discardend_hooks | |
0.00% |
0 / 1 |
110 | |
0.00% |
0 / 29 |
|||
discardstart_functionhooks | |
0.00% |
0 / 1 |
156 | |
0.00% |
0 / 35 |
|||
discardend_functionhooks | |
0.00% |
0 / 1 |
156 | |
0.00% |
0 / 35 |
|||
parseoption_name | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 16 |
|||
parseoption_value | |
0.00% |
0 / 1 |
56 | |
0.00% |
0 / 26 |
|||
parseconfig_list | |
0.00% |
0 / 1 |
56 | |
0.00% |
0 / 24 |
|||
parseoption_value_list | |
0.00% |
0 / 1 |
90 | |
0.00% |
0 / 37 |
|||
parsea_config_line | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 16 |
|||
parsean_option_value | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 16 |
|||
parseconfig_value | |
0.00% |
0 / 1 |
56 | |
0.00% |
0 / 26 |
|||
parselink_target_value | |
0.00% |
0 / 1 |
182 | |
0.00% |
0 / 31 |
|||
parsequoted_value | |
0.00% |
0 / 1 |
272 | |
0.00% |
0 / 53 |
|||
parseplain_value | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 16 |
|||
parsejson_value | |
0.00% |
0 / 1 |
156 | |
0.00% |
0 / 39 |
|||
parsevalid_json_value | |
0.00% |
0 / 1 |
56 | |
0.00% |
0 / 31 |
|||
discardquoted_value | |
0.00% |
0 / 1 |
272 | |
0.00% |
0 / 53 |
|||
discardplain_value | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 16 |
|||
discardarray_value | |
0.00% |
0 / 1 |
156 | |
0.00% |
0 / 39 |
|||
discardjson_value | |
0.00% |
0 / 1 |
156 | |
0.00% |
0 / 39 |
|||
parsearray_value | |
0.00% |
0 / 1 |
156 | |
0.00% |
0 / 39 |
|||
parse | |
0.00% |
0 / 1 |
72 | |
0.00% |
0 / 17 |
<?php | |
/* | |
* Generated by WikiPEG | |
*/ | |
/* File-scope initializer */ | |
namespace Wikimedia\Parsoid\ParserTests; | |
use Wikimedia\Parsoid\Utils\PHPUtils; | |
class Grammar extends \Wikimedia\WikiPEG\PEGParserBase { | |
// initializer | |
/** @var string */ | |
private $filename = ''; | |
/** @var int */ | |
private $lineNum = 1; | |
/** | |
* @param string $filename | |
* @return array | |
*/ | |
public static function load( string $filename ) { | |
$g = new Grammar(); | |
$g->filename = $filename; | |
$contents = file_get_contents( $filename ) ?: ''; | |
if ( substr( $contents, -1 ) !== "\n" ) { | |
# ensure that the file is terminated with a newline | |
# to match `end_section` rule (and other uses of `eol`) | |
$contents .= "\n"; | |
} | |
return $g->parse( $contents ); | |
} | |
private function addLines( int $lineStart, array $item ) { | |
$item['filename'] = $this->filename; | |
$item['lineNumStart'] = $lineStart; | |
$item['lineNumEnd'] = $this->lineNum; | |
return $item; | |
} | |
// cache init | |
// expectations | |
protected $expectations = [ | |
0 => ["type" => "end", "description" => "end of input"], | |
1 => ["type" => "literal", "value" => "!!", "description" => "\"!!\""], | |
2 => ["type" => "class", "value" => "[0-9]", "description" => "[0-9]"], | |
3 => ["type" => "literal", "value" => "#", "description" => "\"#\""], | |
4 => ["type" => "class", "value" => "[ \\t]", "description" => "[ \\t]"], | |
5 => ["type" => "literal", "value" => "\x0a", "description" => "\"\\n\""], | |
6 => ["type" => "literal", "value" => "version", "description" => "\"version\""], | |
7 => ["type" => "class", "value" => "[^\\n]", "description" => "[^\\n]"], | |
8 => ["type" => "literal", "value" => "options", "description" => "\"options\""], | |
9 => ["type" => "literal", "value" => "end", "description" => "\"end\""], | |
10 => ["type" => "literal", "value" => "article", "description" => "\"article\""], | |
11 => ["type" => "literal", "value" => "text", "description" => "\"text\""], | |
12 => ["type" => "literal", "value" => "endarticle", "description" => "\"endarticle\""], | |
13 => ["type" => "literal", "value" => "test", "description" => "\"test\""], | |
14 => ["type" => "class", "value" => "[^ \\t\\r\\n]", "description" => "[^ \\t\\r\\n]"], | |
15 => ["type" => "literal", "value" => "config", "description" => "\"config\""], | |
16 => ["type" => "literal", "value" => "hooks", "description" => "\"hooks\""], | |
17 => ["type" => "literal", "value" => ":", "description" => "\":\""], | |
18 => ["type" => "literal", "value" => "endhooks", "description" => "\"endhooks\""], | |
19 => ["type" => "literal", "value" => "functionhooks", "description" => "\"functionhooks\""], | |
20 => ["type" => "literal", "value" => "endfunctionhooks", "description" => "\"endfunctionhooks\""], | |
21 => ["type" => "class", "value" => "[^ \\t\\n=!]", "description" => "[^ \\t\\n=!]"], | |
22 => ["type" => "literal", "value" => "=", "description" => "\"=\""], | |
23 => ["type" => "literal", "value" => ",", "description" => "\",\""], | |
24 => ["type" => "literal", "value" => "[[", "description" => "\"[[\""], | |
25 => ["type" => "class", "value" => "[^\\]\\n]", "description" => "[^\\]\\n]"], | |
26 => ["type" => "literal", "value" => "]]", "description" => "\"]]\""], | |
27 => ["type" => "class", "value" => "[\\\"]", "description" => "[\\\"]"], | |
28 => ["type" => "class", "value" => "[^\\\\\\\"\\n]", "description" => "[^\\\\\\\"\\n]"], | |
29 => ["type" => "literal", "value" => "\\", "description" => "\"\\\\\""], | |
30 => ["type" => "class", "value" => "[^ \\t\\n\\\"\\'\\[\\]=,!\\{]", "description" => "[^ \\t\\n\\\"\\'\\[\\]=,!\\{]"], | |
31 => ["type" => "literal", "value" => "{", "description" => "\"{\""], | |
32 => ["type" => "class", "value" => "[^\\\"\\{\\}\\n]", "description" => "[^\\\"\\{\\}\\n]"], | |
33 => ["type" => "literal", "value" => "}", "description" => "\"}\""], | |
34 => ["type" => "literal", "value" => "[", "description" => "\"[\""], | |
35 => ["type" => "class", "value" => "[^\\\"\\[\\]\\n]", "description" => "[^\\\"\\[\\]\\n]"], | |
36 => ["type" => "literal", "value" => "]", "description" => "\"]\""], | |
]; | |
// actions | |
private function a0($nl) { | |
return [ 'type' => 'line', 'text' => $nl ]; | |
} | |
private function a1() { | |
return $this->lineNum; | |
} | |
private function a2($l, $v) { | |
return $this->addLines( $l, [ 'type' => 'version', 'text' => $v ] ); | |
} | |
private function a3($l, $sec) { | |
return $this->addLines( $l, $sec ); | |
} | |
private function a4($l, $c) { | |
return $this->addLines($l, $c); | |
} | |
private function a5($text) { | |
return [ 'type' => 'comment', 'text' => $text ]; | |
} | |
private function a6($nl) { | |
$this->lineNum++; return $nl; | |
} | |
private function a7($c) { | |
return implode($c); | |
} | |
private function a8($opts) { | |
$o = []; | |
if ( $opts && count($opts) > 0 ) { | |
foreach ( $opts as $opt ) { | |
$o[$opt['k']] = $opt['v']; | |
} | |
} | |
return [ 'type' => 'section', 'name' => 'options', 'text' => $o ]; | |
} | |
private function a9($l) { | |
return [ 'type' => 'line', 'text' => $l ]; | |
} | |
private function a10($o, $rest) { | |
$result = [ $o ]; | |
if ( $rest && count( $rest ) > 0 ) { | |
$result = array_merge( $result, $rest ); | |
} | |
return $result; | |
} | |
private function a11($title, $text) { | |
return [ | |
'type' => 'article', | |
'title' => $title, | |
'text' => $text | |
]; | |
} | |
private function a12($testName, $sections) { | |
$test = [ | |
'type' => 'test', | |
'testName' => $testName | |
]; | |
foreach ( $sections as $section ) { | |
$test[$section['name']] = $section['text']; | |
} | |
// pegjs parser handles item options as follows: | |
// item option value of item.options.parsoid | |
// <none> undefined | |
// parsoid "" | |
// parsoid=wt2html "wt2html" | |
// parsoid=wt2html,wt2wt ["wt2html","wt2wt"] | |
// parsoid={"modes":["wt2wt"]} {modes:['wt2wt']} | |
// treat 'parsoid=xxx,yyy' in options section as shorthand for | |
// 'parsoid={modes:["xxx","yyy"]}' | |
if ( isset($test['options']['parsoid'] ) ) { | |
if ($test['options']['parsoid'] === '') { | |
$test['options']['parsoid'] = []; | |
} | |
if ( is_string( $test['options']['parsoid'] ) ) { | |
$test['options']['parsoid'] = [ $test['options']['parsoid'] ]; | |
} | |
if ( is_array( $test['options']['parsoid'] ) && | |
isset( $test['options']['parsoid'][0] ) && | |
!isset( $test['options']['parsoid']['modes'] ) | |
) { | |
$test['options']['parsoid'] = [ 'modes' => $test['options']['parsoid'] ]; | |
} | |
} | |
return $test; | |
} | |
private function a13($text) { | |
return [ 'type' => 'hooks', 'text' => $text ]; | |
} | |
private function a14($text) { | |
return [ 'type' => 'functionhooks', 'text' => $text ]; | |
} | |
private function a15($line) { | |
return $line; | |
} | |
private function a16($k, $v) { | |
return [ 'k' => strtolower( $k ), 'v' => $v ?? '' ]; | |
} | |
private function a17($lines) { | |
return implode("\n", $lines); | |
} | |
private function a18($c) { | |
return implode( $c ); | |
} | |
private function a19($name, $text) { | |
return [ 'name' => $name, 'text' => $text ]; | |
} | |
private function a20($items) { | |
$c = []; | |
if ( $items && count($items) > 0 ) { | |
foreach ( $items as $item ) { | |
$c[$item['k']] = $item['v']; | |
} | |
} | |
return [ 'type' => 'section', 'name' => 'config', 'text' => $c ]; | |
} | |
private function a21($ovl) { | |
return count( $ovl ) === 1 ? $ovl[0] : $ovl; | |
} | |
private function a22($c, $rest) { | |
$result = [ $c ]; | |
if ( $rest && count( $rest ) > 0 ) { | |
$result = array_merge( $result, $rest ); | |
} | |
return $result; | |
} | |
private function a23($v, $ovl) { | |
return $ovl; | |
} | |
private function a24($v, $rest) { | |
$result = [ $v ]; | |
if ( $rest && count( $rest ) > 0 ) { | |
$result = array_merge( $result, $rest ); | |
} | |
return $result; | |
} | |
private function a25($k, $v) { | |
return [ 'k' => $k, 'v' => $v ]; | |
} | |
private function a26($v) { | |
if ( $v[0] === '"' || $v[0] === '{' ) { // } is needed to make pegjs happy | |
return PHPUtils::jsonDecode( $v ); | |
} | |
return $v; | |
} | |
private function a27($v) { | |
return $v; | |
} | |
private function a28($v) { | |
// Perhaps we should canonicalize the title? | |
// Protect with JSON.stringify just in case the link target starts with | |
// double-quote or open-brace. | |
return PHPUtils::jsonEncode( implode( $v ) ); | |
} | |
private function a29($c) { | |
return "\\" . $c; | |
} | |
private function a30($v) { | |
return '"' . implode( $v ) . '"'; | |
} | |
private function a31($v) { | |
return implode( $v ); | |
} | |
private function a32($v) { | |
return "{" . implode( $v ) . "}"; | |
} | |
private function a33($v) { | |
// validate this as acceptable JSON | |
// (this ensures that wikipeg throws a syntax error if | |
// the JSON is invalid; note that PHP 7.3 would allow us | |
// to use JSON_THROW_ON_ERROR instead of json_last_error()...) | |
$ignore = json_decode($v, true, 100); | |
return (json_last_error() === JSON_ERROR_NONE); | |
} | |
private function a34($v) { | |
// The value is valid JSON; return the decoded value. | |
return json_decode($v, true); | |
} | |
private function a35($v) { | |
return "[" . implode( $v ) . "]"; | |
} | |
// generated | |
private function parsetestfile($silence) { | |
// start seq_1 | |
$p1 = $this->currPos; | |
$r3 = []; | |
for (;;) { | |
$r4 = $this->parsecomment_or_blank_line($silence); | |
if ($r4!==self::$FAILED) { | |
$r3[] = $r4; | |
} else { | |
break; | |
} | |
} | |
// free $r4 | |
$r4 = $this->parseformat($silence); | |
if ($r4===self::$FAILED) { | |
$r4 = null; | |
} | |
$r5 = []; | |
for (;;) { | |
$r6 = $this->parsecomment_or_blank_line($silence); | |
if ($r6!==self::$FAILED) { | |
$r5[] = $r6; | |
} else { | |
break; | |
} | |
} | |
// free $r6 | |
$r6 = $this->parsetestfile_options($silence); | |
if ($r6===self::$FAILED) { | |
$r6 = null; | |
} | |
$r7 = []; | |
for (;;) { | |
$r8 = $this->parselined_chunk($silence); | |
if ($r8!==self::$FAILED) { | |
$r7[] = $r8; | |
} else { | |
break; | |
} | |
} | |
if (count($r7) === 0) { | |
$r7 = self::$FAILED; | |
} | |
if ($r7===self::$FAILED) { | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
// free $r8 | |
$r2 = [$r3,$r4,$r5,$r6,$r7]; | |
seq_1: | |
// free $r2,$p1 | |
return $r2; | |
} | |
private function parsecomment_or_blank_line($silence) { | |
// start choice_1 | |
$r1 = $this->parsecomment($silence); | |
if ($r1!==self::$FAILED) { | |
goto choice_1; | |
} | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = $this->discardwhitespace($silence); | |
if ($r4===self::$FAILED) { | |
$r4 = null; | |
} | |
$r5 = $this->parseeol($silence); | |
// nl <- $r5 | |
if ($r5===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a0($r5); | |
} | |
// free $p3 | |
choice_1: | |
return $r1; | |
} | |
private function parseformat($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$p5 = $this->currPos; | |
$r4 = ''; | |
// l <- $r4 | |
if ($r4!==self::$FAILED) { | |
$this->savedPos = $p5; | |
$r4 = $this->a1(); | |
} else { | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "!!", $this->currPos, 2, false) === 0) { | |
$r6 = "!!"; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(1);} | |
$r6 = self::$FAILED; | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r7 = $this->discardwhitespace($silence); | |
if ($r7===self::$FAILED) { | |
$r7 = null; | |
} | |
$r8 = $this->discardversion_keyword($silence); | |
if ($r8===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r9 = self::$FAILED; | |
for (;;) { | |
$r10 = $this->discardwhitespace($silence); | |
if ($r10!==self::$FAILED) { | |
$r9 = true; | |
} else { | |
break; | |
} | |
} | |
if ($r9===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
// free $r10 | |
$p11 = $this->currPos; | |
$r10 = self::$FAILED; | |
for (;;) { | |
$r12 = $this->input[$this->currPos] ?? ''; | |
if (preg_match("/^[0-9]/", $r12)) { | |
$this->currPos++; | |
$r10 = true; | |
} else { | |
$r12 = self::$FAILED; | |
if (!$silence) {$this->fail(2);} | |
break; | |
} | |
} | |
// v <- $r10 | |
if ($r10!==self::$FAILED) { | |
$r10 = substr($this->input, $p11, $this->currPos - $p11); | |
} else { | |
$r10 = self::$FAILED; | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
// free $r12 | |
// free $p11 | |
$r12 = $this->discardrest_of_line($silence); | |
if ($r12===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a2($r4, $r10); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parsetestfile_options($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$p5 = $this->currPos; | |
$r4 = ''; | |
// l <- $r4 | |
if ($r4!==self::$FAILED) { | |
$this->savedPos = $p5; | |
$r4 = $this->a1(); | |
} else { | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r6 = $this->parseoption_section($silence); | |
// sec <- $r6 | |
if ($r6===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r7 = $this->discardend_section($silence); | |
if ($r7===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a3($r4, $r6); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parselined_chunk($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$p5 = $this->currPos; | |
$r4 = ''; | |
// l <- $r4 | |
if ($r4!==self::$FAILED) { | |
$this->savedPos = $p5; | |
$r4 = $this->a1(); | |
} else { | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r6 = $this->parsechunk($silence); | |
// c <- $r6 | |
if ($r6===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a4($r4, $r6); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parsecomment($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
if (($this->input[$this->currPos] ?? null) === "#") { | |
$this->currPos++; | |
$r4 = "#"; | |
} else { | |
if (!$silence) {$this->fail(3);} | |
$r4 = self::$FAILED; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = $this->parserest_of_line($silence); | |
// text <- $r5 | |
if ($r5===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a5($r5); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function discardwhitespace($silence) { | |
$r1 = self::$FAILED; | |
for (;;) { | |
$r2 = $this->input[$this->currPos] ?? ''; | |
if ($r2 === " " || $r2 === "\x09") { | |
$this->currPos++; | |
$r1 = true; | |
} else { | |
$r2 = self::$FAILED; | |
if (!$silence) {$this->fail(4);} | |
break; | |
} | |
} | |
// free $r2 | |
return $r1; | |
} | |
private function parseeol($silence) { | |
$p2 = $this->currPos; | |
// nl <- $r3 | |
if (($this->input[$this->currPos] ?? null) === "\x0a") { | |
$this->currPos++; | |
$r3 = "\x0a"; | |
} else { | |
if (!$silence) {$this->fail(5);} | |
$r3 = self::$FAILED; | |
} | |
$r1 = $r3; | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a6($r3); | |
} | |
return $r1; | |
} | |
private function discardversion_keyword($silence) { | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "version", $this->currPos, 7, true) === 0) { | |
$r1 = substr($this->input, $this->currPos, 7); | |
$this->currPos += 7; | |
} else { | |
if (!$silence) {$this->fail(6);} | |
$r1 = self::$FAILED; | |
} | |
return $r1; | |
} | |
private function discardrest_of_line($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = []; | |
for (;;) { | |
$r5 = self::charAt($this->input, $this->currPos); | |
if ($r5 !== '' && !($r5 === "\x0a")) { | |
$this->currPos += strlen($r5); | |
$r4[] = $r5; | |
} else { | |
$r5 = self::$FAILED; | |
if (!$silence) {$this->fail(7);} | |
break; | |
} | |
} | |
// c <- $r4 | |
// free $r5 | |
$r5 = $this->discardeol($silence); | |
if ($r5===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a7($r4); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parseoption_section($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "!!", $this->currPos, 2, false) === 0) { | |
$r4 = "!!"; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(1);} | |
$r4 = self::$FAILED; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = $this->discardwhitespace($silence); | |
if ($r5===self::$FAILED) { | |
$r5 = null; | |
} | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "options", $this->currPos, 7, false) === 0) { | |
$r6 = "options"; | |
$this->currPos += 7; | |
} else { | |
if (!$silence) {$this->fail(8);} | |
$r6 = self::$FAILED; | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r7 = $this->discardwhitespace($silence); | |
if ($r7===self::$FAILED) { | |
$r7 = null; | |
} | |
$r8 = $this->discardeol($silence); | |
if ($r8===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r9 = $this->parseoption_list($silence); | |
if ($r9===self::$FAILED) { | |
$r9 = null; | |
} | |
// opts <- $r9 | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a8($r9); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function discardend_section($silence) { | |
// start seq_1 | |
$p1 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "!!", $this->currPos, 2, false) === 0) { | |
$r3 = "!!"; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(1);} | |
$r3 = self::$FAILED; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r4 = $this->discardwhitespace($silence); | |
if ($r4===self::$FAILED) { | |
$r4 = null; | |
} | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "end", $this->currPos, 3, false) === 0) { | |
$r5 = "end"; | |
$this->currPos += 3; | |
} else { | |
if (!$silence) {$this->fail(9);} | |
$r5 = self::$FAILED; | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r6 = $this->discardwhitespace($silence); | |
if ($r6===self::$FAILED) { | |
$r6 = null; | |
} | |
$r7 = $this->discardeol($silence); | |
if ($r7===self::$FAILED) { | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r2 = true; | |
seq_1: | |
// free $r2,$p1 | |
return $r2; | |
} | |
private function parsechunk($silence) { | |
// start choice_1 | |
$r1 = $this->parsecomment_or_blank_line($silence); | |
if ($r1!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r1 = $this->parsearticle($silence); | |
if ($r1!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r1 = $this->parsetest($silence); | |
if ($r1!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r1 = $this->parsehooks($silence); | |
if ($r1!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r1 = $this->parsefunctionhooks($silence); | |
if ($r1!==self::$FAILED) { | |
goto choice_1; | |
} | |
$p2 = $this->currPos; | |
$r3 = $this->parseline($silence); | |
// l <- $r3 | |
$r1 = $r3; | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a9($r3); | |
} | |
choice_1: | |
return $r1; | |
} | |
private function parserest_of_line($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = []; | |
for (;;) { | |
$r5 = self::charAt($this->input, $this->currPos); | |
if ($r5 !== '' && !($r5 === "\x0a")) { | |
$this->currPos += strlen($r5); | |
$r4[] = $r5; | |
} else { | |
$r5 = self::$FAILED; | |
if (!$silence) {$this->fail(7);} | |
break; | |
} | |
} | |
// c <- $r4 | |
// free $r5 | |
$r5 = $this->discardeol($silence); | |
if ($r5===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a7($r4); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function discardeol($silence) { | |
$p2 = $this->currPos; | |
// nl <- $r3 | |
if (($this->input[$this->currPos] ?? null) === "\x0a") { | |
$this->currPos++; | |
$r3 = "\x0a"; | |
} else { | |
if (!$silence) {$this->fail(5);} | |
$r3 = self::$FAILED; | |
} | |
$r1 = $r3; | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a6($r3); | |
} | |
return $r1; | |
} | |
private function parseoption_list($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = $this->parsean_option($silence); | |
// o <- $r4 | |
if ($r4===self::$FAILED) { | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = self::$FAILED; | |
for (;;) { | |
// start choice_1 | |
$r6 = $this->input[$this->currPos] ?? ''; | |
if ($r6 === " " || $r6 === "\x09") { | |
$this->currPos++; | |
goto choice_1; | |
} else { | |
$r6 = self::$FAILED; | |
if (!$silence) {$this->fail(4);} | |
} | |
$r6 = $this->discardeol($silence); | |
choice_1: | |
if ($r6!==self::$FAILED) { | |
$r5 = true; | |
} else { | |
break; | |
} | |
} | |
if ($r5===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
// free $r6 | |
$r6 = $this->parseoption_list($silence); | |
if ($r6===self::$FAILED) { | |
$r6 = null; | |
} | |
// rest <- $r6 | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a10($r4, $r6); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parsearticle($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = $this->discardstart_article($silence); | |
if ($r4===self::$FAILED) { | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = $this->parseline($silence); | |
// title <- $r5 | |
if ($r5===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r6 = $this->discardstart_text($silence); | |
if ($r6===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r7 = $this->parsetext($silence); | |
// text <- $r7 | |
if ($r7===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
// start choice_1 | |
$r8 = $this->discardend_article($silence); | |
if ($r8!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r8 = $this->discardend_section($silence); | |
choice_1: | |
if ($r8===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a11($r5, $r7); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parsetest($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = $this->discardstart_test($silence); | |
if ($r4===self::$FAILED) { | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = $this->parsetext($silence); | |
// testName <- $r5 | |
if ($r5===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r6 = []; | |
for (;;) { | |
// start choice_1 | |
$r7 = $this->parsesection($silence); | |
if ($r7!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r7 = $this->parseconfig_section($silence); | |
if ($r7!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r7 = $this->parseoption_section($silence); | |
choice_1: | |
if ($r7!==self::$FAILED) { | |
$r6[] = $r7; | |
} else { | |
break; | |
} | |
} | |
// sections <- $r6 | |
// free $r7 | |
$r7 = $this->discardend_section($silence); | |
if ($r7===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a12($r5, $r6); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parsehooks($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = $this->discardstart_hooks($silence); | |
if ($r4===self::$FAILED) { | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = $this->parsetext($silence); | |
// text <- $r5 | |
if ($r5===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
// start choice_1 | |
$r6 = $this->discardend_hooks($silence); | |
if ($r6!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r6 = $this->discardend_section($silence); | |
choice_1: | |
if ($r6===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a13($r5); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parsefunctionhooks($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = $this->discardstart_functionhooks($silence); | |
if ($r4===self::$FAILED) { | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = $this->parsetext($silence); | |
// text <- $r5 | |
if ($r5===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
// start choice_1 | |
$r6 = $this->discardend_functionhooks($silence); | |
if ($r6!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r6 = $this->discardend_section($silence); | |
choice_1: | |
if ($r6===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a14($r5); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parseline($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$p4 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "!!", $this->currPos, 2, false) === 0) { | |
$r5 = "!!"; | |
$this->currPos += 2; | |
} else { | |
$r5 = self::$FAILED; | |
} | |
if ($r5 === self::$FAILED) { | |
$r5 = false; | |
} else { | |
$r5 = self::$FAILED; | |
$this->currPos = $p4; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
// free $p4 | |
$r6 = $this->parserest_of_line($silence); | |
// line <- $r6 | |
if ($r6===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a15($r6); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parsean_option($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = $this->parseoption_name($silence); | |
// k <- $r4 | |
if ($r4===self::$FAILED) { | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = $this->parseoption_value($silence); | |
if ($r5===self::$FAILED) { | |
$r5 = null; | |
} | |
// v <- $r5 | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a16($r4, $r5); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function discardstart_article($silence) { | |
// start seq_1 | |
$p1 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "!!", $this->currPos, 2, false) === 0) { | |
$r3 = "!!"; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(1);} | |
$r3 = self::$FAILED; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r4 = $this->discardwhitespace($silence); | |
if ($r4===self::$FAILED) { | |
$r4 = null; | |
} | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "article", $this->currPos, 7, false) === 0) { | |
$r5 = "article"; | |
$this->currPos += 7; | |
} else { | |
if (!$silence) {$this->fail(10);} | |
$r5 = self::$FAILED; | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r6 = $this->discardwhitespace($silence); | |
if ($r6===self::$FAILED) { | |
$r6 = null; | |
} | |
$r7 = $this->discardeol($silence); | |
if ($r7===self::$FAILED) { | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r2 = true; | |
seq_1: | |
// free $r2,$p1 | |
return $r2; | |
} | |
private function discardstart_text($silence) { | |
// start seq_1 | |
$p1 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "!!", $this->currPos, 2, false) === 0) { | |
$r3 = "!!"; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(1);} | |
$r3 = self::$FAILED; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r4 = $this->discardwhitespace($silence); | |
if ($r4===self::$FAILED) { | |
$r4 = null; | |
} | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "text", $this->currPos, 4, false) === 0) { | |
$r5 = "text"; | |
$this->currPos += 4; | |
} else { | |
if (!$silence) {$this->fail(11);} | |
$r5 = self::$FAILED; | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r6 = $this->discardwhitespace($silence); | |
if ($r6===self::$FAILED) { | |
$r6 = null; | |
} | |
$r7 = $this->discardeol($silence); | |
if ($r7===self::$FAILED) { | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r2 = true; | |
seq_1: | |
// free $r2,$p1 | |
return $r2; | |
} | |
private function parsetext($silence) { | |
$p2 = $this->currPos; | |
$r3 = []; | |
for (;;) { | |
$r4 = $this->parseline($silence); | |
if ($r4!==self::$FAILED) { | |
$r3[] = $r4; | |
} else { | |
break; | |
} | |
} | |
// lines <- $r3 | |
// free $r4 | |
$r1 = $r3; | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a17($r3); | |
} | |
return $r1; | |
} | |
private function discardend_article($silence) { | |
// start seq_1 | |
$p1 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "!!", $this->currPos, 2, false) === 0) { | |
$r3 = "!!"; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(1);} | |
$r3 = self::$FAILED; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r4 = $this->discardwhitespace($silence); | |
if ($r4===self::$FAILED) { | |
$r4 = null; | |
} | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "endarticle", $this->currPos, 10, false) === 0) { | |
$r5 = "endarticle"; | |
$this->currPos += 10; | |
} else { | |
if (!$silence) {$this->fail(12);} | |
$r5 = self::$FAILED; | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r6 = $this->discardwhitespace($silence); | |
if ($r6===self::$FAILED) { | |
$r6 = null; | |
} | |
$r7 = $this->discardeol($silence); | |
if ($r7===self::$FAILED) { | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r2 = true; | |
seq_1: | |
// free $r2,$p1 | |
return $r2; | |
} | |
private function discardstart_test($silence) { | |
// start seq_1 | |
$p1 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "!!", $this->currPos, 2, false) === 0) { | |
$r3 = "!!"; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(1);} | |
$r3 = self::$FAILED; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r4 = $this->discardwhitespace($silence); | |
if ($r4===self::$FAILED) { | |
$r4 = null; | |
} | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "test", $this->currPos, 4, false) === 0) { | |
$r5 = "test"; | |
$this->currPos += 4; | |
} else { | |
if (!$silence) {$this->fail(13);} | |
$r5 = self::$FAILED; | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r6 = $this->discardwhitespace($silence); | |
if ($r6===self::$FAILED) { | |
$r6 = null; | |
} | |
$r7 = $this->discardeol($silence); | |
if ($r7===self::$FAILED) { | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r2 = true; | |
seq_1: | |
// free $r2,$p1 | |
return $r2; | |
} | |
private function parsesection($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "!!", $this->currPos, 2, false) === 0) { | |
$r4 = "!!"; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(1);} | |
$r4 = self::$FAILED; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = $this->discardwhitespace($silence); | |
if ($r5===self::$FAILED) { | |
$r5 = null; | |
} | |
$p6 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "test", $this->currPos, 4, false) === 0) { | |
$r7 = "test"; | |
$this->currPos += 4; | |
} else { | |
$r7 = self::$FAILED; | |
} | |
if ($r7 === self::$FAILED) { | |
$r7 = false; | |
} else { | |
$r7 = self::$FAILED; | |
$this->currPos = $p6; | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
// free $p6 | |
$p6 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "end", $this->currPos, 3, false) === 0) { | |
$r8 = "end"; | |
$this->currPos += 3; | |
} else { | |
$r8 = self::$FAILED; | |
} | |
if ($r8 === self::$FAILED) { | |
$r8 = false; | |
} else { | |
$r8 = self::$FAILED; | |
$this->currPos = $p6; | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
// free $p6 | |
$p6 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "options", $this->currPos, 7, false) === 0) { | |
$r9 = "options"; | |
$this->currPos += 7; | |
} else { | |
$r9 = self::$FAILED; | |
} | |
if ($r9 === self::$FAILED) { | |
$r9 = false; | |
} else { | |
$r9 = self::$FAILED; | |
$this->currPos = $p6; | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
// free $p6 | |
$p6 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "config", $this->currPos, 6, false) === 0) { | |
$r10 = "config"; | |
$this->currPos += 6; | |
} else { | |
$r10 = self::$FAILED; | |
} | |
if ($r10 === self::$FAILED) { | |
$r10 = false; | |
} else { | |
$r10 = self::$FAILED; | |
$this->currPos = $p6; | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
// free $p6 | |
$p6 = $this->currPos; | |
$r12 = []; | |
for (;;) { | |
if (strcspn($this->input, " \x09\x0d\x0a", $this->currPos, 1) !== 0) { | |
$r13 = self::consumeChar($this->input, $this->currPos); | |
$r12[] = $r13; | |
} else { | |
$r13 = self::$FAILED; | |
if (!$silence) {$this->fail(14);} | |
break; | |
} | |
} | |
if (count($r12) === 0) { | |
$r12 = self::$FAILED; | |
} | |
// c <- $r12 | |
// free $r13 | |
$r11 = $r12; | |
// name <- $r11 | |
if ($r11!==self::$FAILED) { | |
$this->savedPos = $p6; | |
$r11 = $this->a18($r12); | |
} else { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r13 = $this->discardrest_of_line($silence); | |
if ($r13===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r14 = $this->parsetext($silence); | |
// text <- $r14 | |
if ($r14===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a19($r11, $r14); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parseconfig_section($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "!!", $this->currPos, 2, false) === 0) { | |
$r4 = "!!"; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(1);} | |
$r4 = self::$FAILED; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = $this->discardwhitespace($silence); | |
if ($r5===self::$FAILED) { | |
$r5 = null; | |
} | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "config", $this->currPos, 6, false) === 0) { | |
$r6 = "config"; | |
$this->currPos += 6; | |
} else { | |
if (!$silence) {$this->fail(15);} | |
$r6 = self::$FAILED; | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r7 = $this->discardwhitespace($silence); | |
if ($r7===self::$FAILED) { | |
$r7 = null; | |
} | |
$r8 = $this->discardeol($silence); | |
if ($r8===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r9 = $this->parseconfig_list($silence); | |
if ($r9===self::$FAILED) { | |
$r9 = null; | |
} | |
// items <- $r9 | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a20($r9); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function discardstart_hooks($silence) { | |
// start seq_1 | |
$p1 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "!!", $this->currPos, 2, false) === 0) { | |
$r3 = "!!"; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(1);} | |
$r3 = self::$FAILED; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r4 = $this->discardwhitespace($silence); | |
if ($r4===self::$FAILED) { | |
$r4 = null; | |
} | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "hooks", $this->currPos, 5, false) === 0) { | |
$r5 = "hooks"; | |
$this->currPos += 5; | |
} else { | |
if (!$silence) {$this->fail(16);} | |
$r5 = self::$FAILED; | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
if (($this->input[$this->currPos] ?? null) === ":") { | |
$this->currPos++; | |
$r6 = ":"; | |
} else { | |
if (!$silence) {$this->fail(17);} | |
$r6 = self::$FAILED; | |
$r6 = null; | |
} | |
$r7 = $this->discardwhitespace($silence); | |
if ($r7===self::$FAILED) { | |
$r7 = null; | |
} | |
$r8 = $this->discardeol($silence); | |
if ($r8===self::$FAILED) { | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r2 = true; | |
seq_1: | |
// free $r2,$p1 | |
return $r2; | |
} | |
private function discardend_hooks($silence) { | |
// start seq_1 | |
$p1 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "!!", $this->currPos, 2, false) === 0) { | |
$r3 = "!!"; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(1);} | |
$r3 = self::$FAILED; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r4 = $this->discardwhitespace($silence); | |
if ($r4===self::$FAILED) { | |
$r4 = null; | |
} | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "endhooks", $this->currPos, 8, false) === 0) { | |
$r5 = "endhooks"; | |
$this->currPos += 8; | |
} else { | |
if (!$silence) {$this->fail(18);} | |
$r5 = self::$FAILED; | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r6 = $this->discardwhitespace($silence); | |
if ($r6===self::$FAILED) { | |
$r6 = null; | |
} | |
$r7 = $this->discardeol($silence); | |
if ($r7===self::$FAILED) { | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r2 = true; | |
seq_1: | |
// free $r2,$p1 | |
return $r2; | |
} | |
private function discardstart_functionhooks($silence) { | |
// start seq_1 | |
$p1 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "!!", $this->currPos, 2, false) === 0) { | |
$r3 = "!!"; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(1);} | |
$r3 = self::$FAILED; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r4 = $this->discardwhitespace($silence); | |
if ($r4===self::$FAILED) { | |
$r4 = null; | |
} | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "functionhooks", $this->currPos, 13, false) === 0) { | |
$r5 = "functionhooks"; | |
$this->currPos += 13; | |
} else { | |
if (!$silence) {$this->fail(19);} | |
$r5 = self::$FAILED; | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
if (($this->input[$this->currPos] ?? null) === ":") { | |
$this->currPos++; | |
$r6 = ":"; | |
} else { | |
if (!$silence) {$this->fail(17);} | |
$r6 = self::$FAILED; | |
$r6 = null; | |
} | |
$r7 = $this->discardwhitespace($silence); | |
if ($r7===self::$FAILED) { | |
$r7 = null; | |
} | |
$r8 = $this->discardeol($silence); | |
if ($r8===self::$FAILED) { | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r2 = true; | |
seq_1: | |
// free $r2,$p1 | |
return $r2; | |
} | |
private function discardend_functionhooks($silence) { | |
// start seq_1 | |
$p1 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "!!", $this->currPos, 2, false) === 0) { | |
$r3 = "!!"; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(1);} | |
$r3 = self::$FAILED; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r4 = $this->discardwhitespace($silence); | |
if ($r4===self::$FAILED) { | |
$r4 = null; | |
} | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "endfunctionhooks", $this->currPos, 16, false) === 0) { | |
$r5 = "endfunctionhooks"; | |
$this->currPos += 16; | |
} else { | |
if (!$silence) {$this->fail(20);} | |
$r5 = self::$FAILED; | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
if (($this->input[$this->currPos] ?? null) === ":") { | |
$this->currPos++; | |
$r6 = ":"; | |
} else { | |
if (!$silence) {$this->fail(17);} | |
$r6 = self::$FAILED; | |
$r6 = null; | |
} | |
$r7 = $this->discardwhitespace($silence); | |
if ($r7===self::$FAILED) { | |
$r7 = null; | |
} | |
$r8 = $this->discardeol($silence); | |
if ($r8===self::$FAILED) { | |
$this->currPos = $p1; | |
$r2 = self::$FAILED; | |
goto seq_1; | |
} | |
$r2 = true; | |
seq_1: | |
// free $r2,$p1 | |
return $r2; | |
} | |
private function parseoption_name($silence) { | |
$p2 = $this->currPos; | |
$r3 = []; | |
for (;;) { | |
if (strcspn($this->input, " \x09\x0a=!", $this->currPos, 1) !== 0) { | |
$r4 = self::consumeChar($this->input, $this->currPos); | |
$r3[] = $r4; | |
} else { | |
$r4 = self::$FAILED; | |
if (!$silence) {$this->fail(21);} | |
break; | |
} | |
} | |
if (count($r3) === 0) { | |
$r3 = self::$FAILED; | |
} | |
// c <- $r3 | |
// free $r4 | |
$r1 = $r3; | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a7($r3); | |
} | |
return $r1; | |
} | |
private function parseoption_value($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = $this->discardwhitespace($silence); | |
if ($r4===self::$FAILED) { | |
$r4 = null; | |
} | |
if (($this->input[$this->currPos] ?? null) === "=") { | |
$this->currPos++; | |
$r5 = "="; | |
} else { | |
if (!$silence) {$this->fail(22);} | |
$r5 = self::$FAILED; | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r6 = $this->discardwhitespace($silence); | |
if ($r6===self::$FAILED) { | |
$r6 = null; | |
} | |
$r7 = $this->parseoption_value_list($silence); | |
// ovl <- $r7 | |
if ($r7===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a21($r7); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parseconfig_list($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = $this->parsea_config_line($silence); | |
// c <- $r4 | |
if ($r4===self::$FAILED) { | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = self::$FAILED; | |
for (;;) { | |
$r6 = $this->discardeol($silence); | |
if ($r6!==self::$FAILED) { | |
$r5 = true; | |
} else { | |
break; | |
} | |
} | |
if ($r5===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
// free $r6 | |
$r6 = $this->parseconfig_list($silence); | |
if ($r6===self::$FAILED) { | |
$r6 = null; | |
} | |
// rest <- $r6 | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a22($r4, $r6); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parseoption_value_list($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = $this->parsean_option_value($silence); | |
// v <- $r4 | |
if ($r4===self::$FAILED) { | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$p6 = $this->currPos; | |
// start seq_2 | |
$p7 = $this->currPos; | |
$r8 = $this->discardwhitespace($silence); | |
if ($r8===self::$FAILED) { | |
$r8 = null; | |
} | |
if (($this->input[$this->currPos] ?? null) === ",") { | |
$this->currPos++; | |
$r9 = ","; | |
} else { | |
if (!$silence) {$this->fail(23);} | |
$r9 = self::$FAILED; | |
$this->currPos = $p7; | |
$r5 = self::$FAILED; | |
goto seq_2; | |
} | |
$r10 = $this->discardwhitespace($silence); | |
if ($r10===self::$FAILED) { | |
$r10 = null; | |
} | |
$r11 = $this->parseoption_value_list($silence); | |
// ovl <- $r11 | |
if ($r11===self::$FAILED) { | |
$this->currPos = $p7; | |
$r5 = self::$FAILED; | |
goto seq_2; | |
} | |
$r5 = true; | |
seq_2: | |
if ($r5!==self::$FAILED) { | |
$this->savedPos = $p6; | |
$r5 = $this->a23($r4, $r11); | |
} else { | |
$r5 = null; | |
} | |
// free $p7 | |
// rest <- $r5 | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a24($r4, $r5); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parsea_config_line($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = $this->parseoption_name($silence); | |
// k <- $r4 | |
if ($r4===self::$FAILED) { | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = $this->parseconfig_value($silence); | |
// v <- $r5 | |
if ($r5===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a25($r4, $r5); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parsean_option_value($silence) { | |
$p2 = $this->currPos; | |
// start choice_1 | |
$r3 = $this->parselink_target_value($silence); | |
if ($r3!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r3 = $this->parsequoted_value($silence); | |
if ($r3!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r3 = $this->parseplain_value($silence); | |
if ($r3!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r3 = $this->parsejson_value($silence); | |
choice_1: | |
// v <- $r3 | |
$r1 = $r3; | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a26($r3); | |
} | |
return $r1; | |
} | |
private function parseconfig_value($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = $this->discardwhitespace($silence); | |
if ($r4===self::$FAILED) { | |
$r4 = null; | |
} | |
if (($this->input[$this->currPos] ?? null) === "=") { | |
$this->currPos++; | |
$r5 = "="; | |
} else { | |
if (!$silence) {$this->fail(22);} | |
$r5 = self::$FAILED; | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r6 = $this->discardwhitespace($silence); | |
if ($r6===self::$FAILED) { | |
$r6 = null; | |
} | |
$r7 = $this->parsevalid_json_value($silence); | |
// v <- $r7 | |
if ($r7===self::$FAILED) { | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a27($r7); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parselink_target_value($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "[[", $this->currPos, 2, false) === 0) { | |
$r4 = "[["; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(24);} | |
$r4 = self::$FAILED; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = []; | |
for (;;) { | |
$r6 = self::charAt($this->input, $this->currPos); | |
if ($r6 !== '' && !($r6 === "]" || $r6 === "\x0a")) { | |
$this->currPos += strlen($r6); | |
$r5[] = $r6; | |
} else { | |
$r6 = self::$FAILED; | |
if (!$silence) {$this->fail(25);} | |
break; | |
} | |
} | |
// v <- $r5 | |
// free $r6 | |
if ($this->currPos >= $this->inputLength ? false : substr_compare($this->input, "]]", $this->currPos, 2, false) === 0) { | |
$r6 = "]]"; | |
$this->currPos += 2; | |
} else { | |
if (!$silence) {$this->fail(26);} | |
$r6 = self::$FAILED; | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a28($r5); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parsequoted_value($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = $this->input[$this->currPos] ?? ''; | |
if ($r4 === "\"") { | |
$this->currPos++; | |
} else { | |
$r4 = self::$FAILED; | |
if (!$silence) {$this->fail(27);} | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = []; | |
for (;;) { | |
// start choice_1 | |
if (strcspn($this->input, "\\\"\x0a", $this->currPos, 1) !== 0) { | |
$r6 = self::consumeChar($this->input, $this->currPos); | |
goto choice_1; | |
} else { | |
$r6 = self::$FAILED; | |
if (!$silence) {$this->fail(28);} | |
} | |
$p7 = $this->currPos; | |
// start seq_2 | |
$p8 = $this->currPos; | |
if (($this->input[$this->currPos] ?? null) === "\\") { | |
$this->currPos++; | |
$r9 = "\\"; | |
} else { | |
if (!$silence) {$this->fail(29);} | |
$r9 = self::$FAILED; | |
$r6 = self::$FAILED; | |
goto seq_2; | |
} | |
$r10 = self::charAt($this->input, $this->currPos); | |
// c <- $r10 | |
if ($r10 !== '' && !($r10 === "\x0a")) { | |
$this->currPos += strlen($r10); | |
} else { | |
$r10 = self::$FAILED; | |
if (!$silence) {$this->fail(7);} | |
$this->currPos = $p8; | |
$r6 = self::$FAILED; | |
goto seq_2; | |
} | |
$r6 = true; | |
seq_2: | |
if ($r6!==self::$FAILED) { | |
$this->savedPos = $p7; | |
$r6 = $this->a29($r10); | |
} | |
// free $p8 | |
choice_1: | |
if ($r6!==self::$FAILED) { | |
$r5[] = $r6; | |
} else { | |
break; | |
} | |
} | |
// v <- $r5 | |
// free $r6 | |
$r6 = $this->input[$this->currPos] ?? ''; | |
if ($r6 === "\"") { | |
$this->currPos++; | |
} else { | |
$r6 = self::$FAILED; | |
if (!$silence) {$this->fail(27);} | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a30($r5); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parseplain_value($silence) { | |
$p2 = $this->currPos; | |
$r3 = []; | |
for (;;) { | |
if (strcspn($this->input, " \x09\x0a\"'[]=,!{", $this->currPos, 1) !== 0) { | |
$r4 = self::consumeChar($this->input, $this->currPos); | |
$r3[] = $r4; | |
} else { | |
$r4 = self::$FAILED; | |
if (!$silence) {$this->fail(30);} | |
break; | |
} | |
} | |
if (count($r3) === 0) { | |
$r3 = self::$FAILED; | |
} | |
// v <- $r3 | |
// free $r4 | |
$r1 = $r3; | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a31($r3); | |
} | |
return $r1; | |
} | |
private function parsejson_value($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
if (($this->input[$this->currPos] ?? null) === "{") { | |
$this->currPos++; | |
$r4 = "{"; | |
} else { | |
if (!$silence) {$this->fail(31);} | |
$r4 = self::$FAILED; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = []; | |
for (;;) { | |
// start choice_1 | |
if (strcspn($this->input, "\"{}\x0a", $this->currPos, 1) !== 0) { | |
$r6 = self::consumeChar($this->input, $this->currPos); | |
goto choice_1; | |
} else { | |
$r6 = self::$FAILED; | |
if (!$silence) {$this->fail(32);} | |
} | |
$r6 = $this->parsequoted_value($silence); | |
if ($r6!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r6 = $this->parsejson_value($silence); | |
if ($r6!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r6 = $this->parseeol($silence); | |
choice_1: | |
if ($r6!==self::$FAILED) { | |
$r5[] = $r6; | |
} else { | |
break; | |
} | |
} | |
// v <- $r5 | |
// free $r6 | |
if (($this->input[$this->currPos] ?? null) === "}") { | |
$this->currPos++; | |
$r6 = "}"; | |
} else { | |
if (!$silence) {$this->fail(33);} | |
$r6 = self::$FAILED; | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a32($r5); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function parsevalid_json_value($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$p5 = $this->currPos; | |
// start choice_1 | |
$r4 = $this->discardquoted_value($silence); | |
if ($r4!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r4 = $this->discardplain_value($silence); | |
if ($r4!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r4 = $this->discardarray_value($silence); | |
if ($r4!==self::$FAILED) { | |
goto choice_1; | |
} | |
$r4 = $this->discardjson_value($silence); | |
choice_1: | |
// v <- $r4 | |
if ($r4!==self::$FAILED) { | |
$r4 = substr($this->input, $p5, $this->currPos - $p5); | |
} else { | |
$r4 = self::$FAILED; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
// free $p5 | |
$this->savedPos = $this->currPos; | |
$r6 = $this->a33($r4); | |
if ($r6) { | |
$r6 = false; | |
} else { | |
$r6 = self::$FAILED; | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a34($r4); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function discardquoted_value($silence) { | |
$p2 = $this->currPos; | |
// start seq_1 | |
$p3 = $this->currPos; | |
$r4 = $this->input[$this->currPos] ?? ''; | |
if ($r4 === "\"") { | |
$this->currPos++; | |
} else { | |
$r4 = self::$FAILED; | |
if (!$silence) {$this->fail(27);} | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r5 = []; | |
for (;;) { | |
// start choice_1 | |
if (strcspn($this->input, "\\\"\x0a", $this->currPos, 1) !== 0) { | |
$r6 = self::consumeChar($this->input, $this->currPos); | |
goto choice_1; | |
} else { | |
$r6 = self::$FAILED; | |
if (!$silence) {$this->fail(28);} | |
} | |
$p7 = $this->currPos; | |
// start seq_2 | |
$p8 = $this->currPos; | |
if (($this->input[$this->currPos] ?? null) === "\\") { | |
$this->currPos++; | |
$r9 = "\\"; | |
} else { | |
if (!$silence) {$this->fail(29);} | |
$r9 = self::$FAILED; | |
$r6 = self::$FAILED; | |
goto seq_2; | |
} | |
$r10 = self::charAt($this->input, $this->currPos); | |
// c <- $r10 | |
if ($r10 !== '' && !($r10 === "\x0a")) { | |
$this->currPos += strlen($r10); | |
} else { | |
$r10 = self::$FAILED; | |
if (!$silence) {$this->fail(7);} | |
$this->currPos = $p8; | |
$r6 = self::$FAILED; | |
goto seq_2; | |
} | |
$r6 = true; | |
seq_2: | |
if ($r6!==self::$FAILED) { | |
$this->savedPos = $p7; | |
$r6 = $this->a29($r10); | |
} | |
// free $p8 | |
choice_1: | |
if ($r6!==self::$FAILED) { | |
$r5[] = $r6; | |
} else { | |
break; | |
} | |
} | |
// v <- $r5 | |
// free $r6 | |
$r6 = $this->input[$this->currPos] ?? ''; | |
if ($r6 === "\"") { | |
$this->currPos++; | |
} else { | |
$r6 = self::$FAILED; | |
if (!$silence) {$this->fail(27);} | |
$this->currPos = $p3; | |
$r1 = self::$FAILED; | |
goto seq_1; | |
} | |
$r1 = true; | |
seq_1: | |
if ($r1!==self::$FAILED) { | |
$this->savedPos = $p2; | |
$r1 = $this->a30($r5); | |
} | |
// free $p3 | |
return $r1; | |
} | |
private function discardplain_value($silence) { | |
$p2 = $this->currPos; | |
$r3 = []; | |
for (;;) { | |