diff --git a/bin/run-wp-unit-tests.sh b/bin/run-wp-unit-tests.sh
index 8c426abd233a1c..8e1ee81db79e3d 100755
--- a/bin/run-wp-unit-tests.sh
+++ b/bin/run-wp-unit-tests.sh
@@ -21,16 +21,6 @@ fi
npm run build || exit 1
-# Make sure phpegjs parser is up to date
-node bin/create-php-parser.js || exit 1
-if ! git diff --quiet --exit-code lib/parser.php; then
- echo 'ERROR: The PEG parser has been updated, but the generated PHP version'
- echo ' (lib/parser.php) has not. Run `bin/create-php-parser.js` and'
- echo ' commit the resulting changes to resolve this.'
- sleep .2 # Otherwise Travis doesn't want to print the whole message
- exit 1
-fi
-
echo Running with the following versions:
if [[ $DOCKER = "true" ]]; then
docker-compose $DOCKER_COMPOSE_FILE_OPTIONS run --rm wordpress_phpunit php -v
@@ -40,9 +30,6 @@ else
phpunit --version
fi
-# Check parser syntax
-php lib/parser.php || exit 1
-
# Run PHPUnit tests
if [[ $DOCKER = "true" ]]; then
npm run test-php || exit 1
diff --git a/lib/parser.php b/lib/parser.php
deleted file mode 100644
index 8fbcaa19bb458f..00000000000000
--- a/lib/parser.php
+++ /dev/null
@@ -1,1681 +0,0 @@
-= $range[0] && $code <= $range[1]) {
- return true;
- }
- }
- return false;
- }
-}
-
-/* Syntax error exception */
-if (!class_exists("Gutenberg_PEG_SyntaxError", false)) {
- class Gutenberg_PEG_SyntaxError extends Exception {
- public $expected;
- public $found;
- public $grammarOffset;
- public $grammarLine;
- public $grammarColumn;
- public $name;
- public function __construct($message, $expected, $found, $offset, $line, $column) {
- parent::__construct($message, 0);
- $this->expected = $expected;
- $this->found = $found;
- $this->grammarOffset = $offset;
- $this->grammarLine = $line;
- $this->grammarColumn = $column;
- $this->name = "Gutenberg_PEG_SyntaxError";
- }
- }
-}
-
-class Gutenberg_PEG_Parser {
- 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;
-
- 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;
-
- }
-
- 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 substr($this->input, $this->peg_reportedPos, $this->peg_reportedPos + $this->peg_currPos);
- }
-
- 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 Gutenberg_PEG_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 function peg_f0($pre, $b, $html) { return array( $b, $html ); }
- private function peg_f1($pre, $bs, $post) { return peg_join_blocks( $pre, $bs, $post ); }
- private function peg_f2($blockName, $a) { return $a; }
- private function peg_f3($blockName, $attrs) {
- return array(
- 'blockName' => $blockName,
- 'attrs' => empty( $attrs ) ? peg_empty_attrs() : $attrs,
- 'innerBlocks' => array(),
- 'innerHTML' => '',
- 'innerContent' => array(),
- );
- }
- private function peg_f4($s, $children, $e) {
- list( $innerHTML, $innerBlocks, $innerContent ) = peg_process_inner_content( $children );
-
- return array(
- 'blockName' => $s['blockName'],
- 'attrs' => empty( $s['attrs'] ) ? peg_empty_attrs() : $s['attrs'],
- 'innerBlocks' => $innerBlocks,
- 'innerHTML' => $innerHTML,
- 'innerContent' => $innerContent,
- );
- }
- private function peg_f5($blockName, $attrs) {
- return array(
- 'blockName' => $blockName,
- 'attrs' => isset( $attrs ) ? $attrs : array(),
- );
- }
- private function peg_f6($blockName) {
- return array(
- 'blockName' => $blockName,
- );
- }
- private function peg_f7($type) { return "core/$type"; }
- private function peg_f8($attrs) { return json_decode( $attrs, true ); }
-
- private function peg_parseBlock_List() {
-
- $s0 = $this->peg_currPos;
- $s1 = $this->peg_currPos;
- $s2 = array();
- $s3 = $this->peg_currPos;
- $s4 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s5 = $this->peg_parseBlock();
- $this->peg_silentFails--;
- if ($s5 === $this->peg_FAILED) {
- $s4 = null;
- } else {
- $this->peg_currPos = $s4;
- $s4 = $this->peg_FAILED;
- }
- if ($s4 !== $this->peg_FAILED) {
- if ($this->input_length > $this->peg_currPos) {
- $s5 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s5 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c0);
- }
- }
- 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;
- }
- while ($s3 !== $this->peg_FAILED) {
- $s2[] = $s3;
- $s3 = $this->peg_currPos;
- $s4 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s5 = $this->peg_parseBlock();
- $this->peg_silentFails--;
- if ($s5 === $this->peg_FAILED) {
- $s4 = null;
- } else {
- $this->peg_currPos = $s4;
- $s4 = $this->peg_FAILED;
- }
- if ($s4 !== $this->peg_FAILED) {
- if ($this->input_length > $this->peg_currPos) {
- $s5 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s5 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c0);
- }
- }
- 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 ($s2 !== $this->peg_FAILED) {
- $s1 = $this->input_substr($s1, $this->peg_currPos - $s1);
- } else {
- $s1 = $s2;
- }
- if ($s1 !== $this->peg_FAILED) {
- $s2 = array();
- $s3 = $this->peg_currPos;
- $s4 = $this->peg_parseBlock();
- if ($s4 !== $this->peg_FAILED) {
- $s5 = $this->peg_currPos;
- $s6 = array();
- $s7 = $this->peg_currPos;
- $s8 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s9 = $this->peg_parseBlock();
- $this->peg_silentFails--;
- if ($s9 === $this->peg_FAILED) {
- $s8 = null;
- } else {
- $this->peg_currPos = $s8;
- $s8 = $this->peg_FAILED;
- }
- if ($s8 !== $this->peg_FAILED) {
- if ($this->input_length > $this->peg_currPos) {
- $s9 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s9 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c0);
- }
- }
- if ($s9 !== $this->peg_FAILED) {
- $s8 = array($s8, $s9);
- $s7 = $s8;
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- while ($s7 !== $this->peg_FAILED) {
- $s6[] = $s7;
- $s7 = $this->peg_currPos;
- $s8 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s9 = $this->peg_parseBlock();
- $this->peg_silentFails--;
- if ($s9 === $this->peg_FAILED) {
- $s8 = null;
- } else {
- $this->peg_currPos = $s8;
- $s8 = $this->peg_FAILED;
- }
- if ($s8 !== $this->peg_FAILED) {
- if ($this->input_length > $this->peg_currPos) {
- $s9 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s9 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c0);
- }
- }
- if ($s9 !== $this->peg_FAILED) {
- $s8 = array($s8, $s9);
- $s7 = $s8;
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- }
- if ($s6 !== $this->peg_FAILED) {
- $s5 = $this->input_substr($s5, $this->peg_currPos - $s5);
- } else {
- $s5 = $s6;
- }
- if ($s5 !== $this->peg_FAILED) {
- $this->peg_reportedPos = $s3;
- $s4 = $this->peg_f0($s1, $s4, $s5);
- $s3 = $s4;
- } else {
- $this->peg_currPos = $s3;
- $s3 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s3;
- $s3 = $this->peg_FAILED;
- }
- while ($s3 !== $this->peg_FAILED) {
- $s2[] = $s3;
- $s3 = $this->peg_currPos;
- $s4 = $this->peg_parseBlock();
- if ($s4 !== $this->peg_FAILED) {
- $s5 = $this->peg_currPos;
- $s6 = array();
- $s7 = $this->peg_currPos;
- $s8 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s9 = $this->peg_parseBlock();
- $this->peg_silentFails--;
- if ($s9 === $this->peg_FAILED) {
- $s8 = null;
- } else {
- $this->peg_currPos = $s8;
- $s8 = $this->peg_FAILED;
- }
- if ($s8 !== $this->peg_FAILED) {
- if ($this->input_length > $this->peg_currPos) {
- $s9 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s9 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c0);
- }
- }
- if ($s9 !== $this->peg_FAILED) {
- $s8 = array($s8, $s9);
- $s7 = $s8;
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- while ($s7 !== $this->peg_FAILED) {
- $s6[] = $s7;
- $s7 = $this->peg_currPos;
- $s8 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s9 = $this->peg_parseBlock();
- $this->peg_silentFails--;
- if ($s9 === $this->peg_FAILED) {
- $s8 = null;
- } else {
- $this->peg_currPos = $s8;
- $s8 = $this->peg_FAILED;
- }
- if ($s8 !== $this->peg_FAILED) {
- if ($this->input_length > $this->peg_currPos) {
- $s9 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s9 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c0);
- }
- }
- if ($s9 !== $this->peg_FAILED) {
- $s8 = array($s8, $s9);
- $s7 = $s8;
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- }
- if ($s6 !== $this->peg_FAILED) {
- $s5 = $this->input_substr($s5, $this->peg_currPos - $s5);
- } else {
- $s5 = $s6;
- }
- if ($s5 !== $this->peg_FAILED) {
- $this->peg_reportedPos = $s3;
- $s4 = $this->peg_f0($s1, $s4, $s5);
- $s3 = $s4;
- } else {
- $this->peg_currPos = $s3;
- $s3 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s3;
- $s3 = $this->peg_FAILED;
- }
- }
- if ($s2 !== $this->peg_FAILED) {
- $s3 = $this->peg_currPos;
- $s4 = array();
- if ($this->input_length > $this->peg_currPos) {
- $s5 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s5 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c0);
- }
- }
- while ($s5 !== $this->peg_FAILED) {
- $s4[] = $s5;
- if ($this->input_length > $this->peg_currPos) {
- $s5 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s5 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c0);
- }
- }
- }
- if ($s4 !== $this->peg_FAILED) {
- $s3 = $this->input_substr($s3, $this->peg_currPos - $s3);
- } else {
- $s3 = $s4;
- }
- if ($s3 !== $this->peg_FAILED) {
- $this->peg_reportedPos = $s0;
- $s1 = $this->peg_f1($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;
- }
-
- return $s0;
- }
-
- private function peg_parseBlock() {
-
- $s0 = $this->peg_parseBlock_Void();
- if ($s0 === $this->peg_FAILED) {
- $s0 = $this->peg_parseBlock_Balanced();
- }
-
- return $s0;
- }
-
- private function peg_parseBlock_Void() {
-
- $s0 = $this->peg_currPos;
- if ($this->input_substr($this->peg_currPos, 4) === $this->peg_c1) {
- $s1 = $this->peg_c1;
- $this->peg_currPos += 4;
- } else {
- $s1 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c2);
- }
- }
- if ($s1 !== $this->peg_FAILED) {
- $s2 = $this->peg_parse__();
- if ($s2 !== $this->peg_FAILED) {
- if ($this->input_substr($this->peg_currPos, 3) === $this->peg_c3) {
- $s3 = $this->peg_c3;
- $this->peg_currPos += 3;
- } else {
- $s3 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c4);
- }
- }
- if ($s3 !== $this->peg_FAILED) {
- $s4 = $this->peg_parseBlock_Name();
- if ($s4 !== $this->peg_FAILED) {
- $s5 = $this->peg_parse__();
- if ($s5 !== $this->peg_FAILED) {
- $s6 = $this->peg_currPos;
- $s7 = $this->peg_parseBlock_Attributes();
- if ($s7 !== $this->peg_FAILED) {
- $s8 = $this->peg_parse__();
- if ($s8 !== $this->peg_FAILED) {
- $this->peg_reportedPos = $s6;
- $s7 = $this->peg_f2($s4, $s7);
- $s6 = $s7;
- } else {
- $this->peg_currPos = $s6;
- $s6 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s6;
- $s6 = $this->peg_FAILED;
- }
- if ($s6 === $this->peg_FAILED) {
- $s6 = null;
- }
- if ($s6 !== $this->peg_FAILED) {
- if ($this->input_substr($this->peg_currPos, 4) === $this->peg_c5) {
- $s7 = $this->peg_c5;
- $this->peg_currPos += 4;
- } else {
- $s7 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c6);
- }
- }
- if ($s7 !== $this->peg_FAILED) {
- $this->peg_reportedPos = $s0;
- $s1 = $this->peg_f3($s4, $s6);
- $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;
- }
- } 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;
- }
-
- return $s0;
- }
-
- private function peg_parseBlock_Balanced() {
-
- $s0 = $this->peg_currPos;
- $s1 = $this->peg_parseBlock_Start();
- if ($s1 !== $this->peg_FAILED) {
- $s2 = array();
- $s3 = $this->peg_parseBlock();
- if ($s3 === $this->peg_FAILED) {
- $s3 = $this->peg_currPos;
- $s4 = array();
- $s5 = $this->peg_currPos;
- $s6 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s7 = $this->peg_parseBlock();
- $this->peg_silentFails--;
- if ($s7 === $this->peg_FAILED) {
- $s6 = null;
- } else {
- $this->peg_currPos = $s6;
- $s6 = $this->peg_FAILED;
- }
- if ($s6 !== $this->peg_FAILED) {
- $s7 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s8 = $this->peg_parseBlock_End();
- $this->peg_silentFails--;
- if ($s8 === $this->peg_FAILED) {
- $s7 = null;
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- if ($s7 !== $this->peg_FAILED) {
- if ($this->input_length > $this->peg_currPos) {
- $s8 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s8 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c0);
- }
- }
- if ($s8 !== $this->peg_FAILED) {
- $s6 = array($s6, $s7, $s8);
- $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;
- }
- if ($s5 !== $this->peg_FAILED) {
- while ($s5 !== $this->peg_FAILED) {
- $s4[] = $s5;
- $s5 = $this->peg_currPos;
- $s6 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s7 = $this->peg_parseBlock();
- $this->peg_silentFails--;
- if ($s7 === $this->peg_FAILED) {
- $s6 = null;
- } else {
- $this->peg_currPos = $s6;
- $s6 = $this->peg_FAILED;
- }
- if ($s6 !== $this->peg_FAILED) {
- $s7 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s8 = $this->peg_parseBlock_End();
- $this->peg_silentFails--;
- if ($s8 === $this->peg_FAILED) {
- $s7 = null;
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- if ($s7 !== $this->peg_FAILED) {
- if ($this->input_length > $this->peg_currPos) {
- $s8 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s8 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c0);
- }
- }
- if ($s8 !== $this->peg_FAILED) {
- $s6 = array($s6, $s7, $s8);
- $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 {
- $s4 = $this->peg_FAILED;
- }
- if ($s4 !== $this->peg_FAILED) {
- $s3 = $this->input_substr($s3, $this->peg_currPos - $s3);
- } else {
- $s3 = $s4;
- }
- }
- while ($s3 !== $this->peg_FAILED) {
- $s2[] = $s3;
- $s3 = $this->peg_parseBlock();
- if ($s3 === $this->peg_FAILED) {
- $s3 = $this->peg_currPos;
- $s4 = array();
- $s5 = $this->peg_currPos;
- $s6 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s7 = $this->peg_parseBlock();
- $this->peg_silentFails--;
- if ($s7 === $this->peg_FAILED) {
- $s6 = null;
- } else {
- $this->peg_currPos = $s6;
- $s6 = $this->peg_FAILED;
- }
- if ($s6 !== $this->peg_FAILED) {
- $s7 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s8 = $this->peg_parseBlock_End();
- $this->peg_silentFails--;
- if ($s8 === $this->peg_FAILED) {
- $s7 = null;
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- if ($s7 !== $this->peg_FAILED) {
- if ($this->input_length > $this->peg_currPos) {
- $s8 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s8 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c0);
- }
- }
- if ($s8 !== $this->peg_FAILED) {
- $s6 = array($s6, $s7, $s8);
- $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;
- }
- if ($s5 !== $this->peg_FAILED) {
- while ($s5 !== $this->peg_FAILED) {
- $s4[] = $s5;
- $s5 = $this->peg_currPos;
- $s6 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s7 = $this->peg_parseBlock();
- $this->peg_silentFails--;
- if ($s7 === $this->peg_FAILED) {
- $s6 = null;
- } else {
- $this->peg_currPos = $s6;
- $s6 = $this->peg_FAILED;
- }
- if ($s6 !== $this->peg_FAILED) {
- $s7 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s8 = $this->peg_parseBlock_End();
- $this->peg_silentFails--;
- if ($s8 === $this->peg_FAILED) {
- $s7 = null;
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- if ($s7 !== $this->peg_FAILED) {
- if ($this->input_length > $this->peg_currPos) {
- $s8 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s8 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c0);
- }
- }
- if ($s8 !== $this->peg_FAILED) {
- $s6 = array($s6, $s7, $s8);
- $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 {
- $s4 = $this->peg_FAILED;
- }
- if ($s4 !== $this->peg_FAILED) {
- $s3 = $this->input_substr($s3, $this->peg_currPos - $s3);
- } else {
- $s3 = $s4;
- }
- }
- }
- if ($s2 !== $this->peg_FAILED) {
- $s3 = $this->peg_parseBlock_End();
- if ($s3 !== $this->peg_FAILED) {
- $this->peg_reportedPos = $s0;
- $s1 = $this->peg_f4($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;
- }
-
- return $s0;
- }
-
- private function peg_parseBlock_Start() {
-
- $s0 = $this->peg_currPos;
- if ($this->input_substr($this->peg_currPos, 4) === $this->peg_c1) {
- $s1 = $this->peg_c1;
- $this->peg_currPos += 4;
- } else {
- $s1 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c2);
- }
- }
- if ($s1 !== $this->peg_FAILED) {
- $s2 = $this->peg_parse__();
- if ($s2 !== $this->peg_FAILED) {
- if ($this->input_substr($this->peg_currPos, 3) === $this->peg_c3) {
- $s3 = $this->peg_c3;
- $this->peg_currPos += 3;
- } else {
- $s3 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c4);
- }
- }
- if ($s3 !== $this->peg_FAILED) {
- $s4 = $this->peg_parseBlock_Name();
- if ($s4 !== $this->peg_FAILED) {
- $s5 = $this->peg_parse__();
- if ($s5 !== $this->peg_FAILED) {
- $s6 = $this->peg_currPos;
- $s7 = $this->peg_parseBlock_Attributes();
- if ($s7 !== $this->peg_FAILED) {
- $s8 = $this->peg_parse__();
- if ($s8 !== $this->peg_FAILED) {
- $this->peg_reportedPos = $s6;
- $s7 = $this->peg_f2($s4, $s7);
- $s6 = $s7;
- } else {
- $this->peg_currPos = $s6;
- $s6 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s6;
- $s6 = $this->peg_FAILED;
- }
- if ($s6 === $this->peg_FAILED) {
- $s6 = null;
- }
- if ($s6 !== $this->peg_FAILED) {
- if ($this->input_substr($this->peg_currPos, 3) === $this->peg_c7) {
- $s7 = $this->peg_c7;
- $this->peg_currPos += 3;
- } else {
- $s7 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c8);
- }
- }
- if ($s7 !== $this->peg_FAILED) {
- $this->peg_reportedPos = $s0;
- $s1 = $this->peg_f5($s4, $s6);
- $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;
- }
- } 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;
- }
-
- return $s0;
- }
-
- private function peg_parseBlock_End() {
-
- $s0 = $this->peg_currPos;
- if ($this->input_substr($this->peg_currPos, 4) === $this->peg_c1) {
- $s1 = $this->peg_c1;
- $this->peg_currPos += 4;
- } else {
- $s1 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c2);
- }
- }
- if ($s1 !== $this->peg_FAILED) {
- $s2 = $this->peg_parse__();
- if ($s2 !== $this->peg_FAILED) {
- if ($this->input_substr($this->peg_currPos, 4) === $this->peg_c9) {
- $s3 = $this->peg_c9;
- $this->peg_currPos += 4;
- } else {
- $s3 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c10);
- }
- }
- if ($s3 !== $this->peg_FAILED) {
- $s4 = $this->peg_parseBlock_Name();
- if ($s4 !== $this->peg_FAILED) {
- $s5 = $this->peg_parse__();
- if ($s5 !== $this->peg_FAILED) {
- if ($this->input_substr($this->peg_currPos, 3) === $this->peg_c7) {
- $s6 = $this->peg_c7;
- $this->peg_currPos += 3;
- } else {
- $s6 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c8);
- }
- }
- if ($s6 !== $this->peg_FAILED) {
- $this->peg_reportedPos = $s0;
- $s1 = $this->peg_f6($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;
- }
- } else {
- $this->peg_currPos = $s0;
- $s0 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s0;
- $s0 = $this->peg_FAILED;
- }
-
- return $s0;
- }
-
- private function peg_parseBlock_Name() {
-
- $s0 = $this->peg_parseNamespaced_Block_Name();
- if ($s0 === $this->peg_FAILED) {
- $s0 = $this->peg_parseCore_Block_Name();
- }
-
- return $s0;
- }
-
- private function peg_parseNamespaced_Block_Name() {
-
- $s0 = $this->peg_currPos;
- $s1 = $this->peg_currPos;
- $s2 = $this->peg_parseBlock_Name_Part();
- if ($s2 !== $this->peg_FAILED) {
- if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c11) {
- $s3 = $this->peg_c11;
- $this->peg_currPos++;
- } else {
- $s3 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c12);
- }
- }
- if ($s3 !== $this->peg_FAILED) {
- $s4 = $this->peg_parseBlock_Name_Part();
- if ($s4 !== $this->peg_FAILED) {
- $s2 = array($s2, $s3, $s4);
- $s1 = $s2;
- } else {
- $this->peg_currPos = $s1;
- $s1 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s1;
- $s1 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s1;
- $s1 = $this->peg_FAILED;
- }
- if ($s1 !== $this->peg_FAILED) {
- $s0 = $this->input_substr($s0, $this->peg_currPos - $s0);
- } else {
- $s0 = $s1;
- }
-
- return $s0;
- }
-
- private function peg_parseCore_Block_Name() {
-
- $s0 = $this->peg_currPos;
- $s1 = $this->peg_currPos;
- $s2 = $this->peg_parseBlock_Name_Part();
- if ($s2 !== $this->peg_FAILED) {
- $s1 = $this->input_substr($s1, $this->peg_currPos - $s1);
- } else {
- $s1 = $s2;
- }
- if ($s1 !== $this->peg_FAILED) {
- $this->peg_reportedPos = $s0;
- $s1 = $this->peg_f7($s1);
- }
- $s0 = $s1;
-
- return $s0;
- }
-
- private function peg_parseBlock_Name_Part() {
-
- $s0 = $this->peg_currPos;
- $s1 = $this->peg_currPos;
- if (Gutenberg_PEG_peg_char_class_test($this->peg_c13, $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_c14);
- }
- }
- if ($s2 !== $this->peg_FAILED) {
- $s3 = array();
- if (Gutenberg_PEG_peg_char_class_test($this->peg_c15, $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_c16);
- }
- }
- while ($s4 !== $this->peg_FAILED) {
- $s3[] = $s4;
- if (Gutenberg_PEG_peg_char_class_test($this->peg_c15, $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_c16);
- }
- }
- }
- if ($s3 !== $this->peg_FAILED) {
- $s2 = array($s2, $s3);
- $s1 = $s2;
- } else {
- $this->peg_currPos = $s1;
- $s1 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s1;
- $s1 = $this->peg_FAILED;
- }
- if ($s1 !== $this->peg_FAILED) {
- $s0 = $this->input_substr($s0, $this->peg_currPos - $s0);
- } else {
- $s0 = $s1;
- }
-
- return $s0;
- }
-
- private function peg_parseBlock_Attributes() {
-
- $this->peg_silentFails++;
- $s0 = $this->peg_currPos;
- $s1 = $this->peg_currPos;
- $s2 = $this->peg_currPos;
- if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c18) {
- $s3 = $this->peg_c18;
- $this->peg_currPos++;
- } else {
- $s3 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c19);
- }
- }
- if ($s3 !== $this->peg_FAILED) {
- $s4 = array();
- $s5 = $this->peg_currPos;
- $s6 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s7 = $this->peg_currPos;
- if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c20) {
- $s8 = $this->peg_c20;
- $this->peg_currPos++;
- } else {
- $s8 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c21);
- }
- }
- if ($s8 !== $this->peg_FAILED) {
- $s9 = $this->peg_parse__();
- if ($s9 !== $this->peg_FAILED) {
- $s10 = $this->peg_c22;
- if ($s10 !== $this->peg_FAILED) {
- if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c11) {
- $s11 = $this->peg_c11;
- $this->peg_currPos++;
- } else {
- $s11 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c12);
- }
- }
- if ($s11 === $this->peg_FAILED) {
- $s11 = null;
- }
- if ($s11 !== $this->peg_FAILED) {
- if ($this->input_substr($this->peg_currPos, 3) === $this->peg_c7) {
- $s12 = $this->peg_c7;
- $this->peg_currPos += 3;
- } else {
- $s12 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c8);
- }
- }
- if ($s12 !== $this->peg_FAILED) {
- $s8 = array($s8, $s9, $s10, $s11, $s12);
- $s7 = $s8;
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- $this->peg_silentFails--;
- if ($s7 === $this->peg_FAILED) {
- $s6 = null;
- } else {
- $this->peg_currPos = $s6;
- $s6 = $this->peg_FAILED;
- }
- if ($s6 !== $this->peg_FAILED) {
- if ($this->input_length > $this->peg_currPos) {
- $s7 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s7 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c0);
- }
- }
- if ($s7 !== $this->peg_FAILED) {
- $s6 = array($s6, $s7);
- $s5 = $s6;
- } 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;
- $s6 = $this->peg_currPos;
- $this->peg_silentFails++;
- $s7 = $this->peg_currPos;
- if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c20) {
- $s8 = $this->peg_c20;
- $this->peg_currPos++;
- } else {
- $s8 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c21);
- }
- }
- if ($s8 !== $this->peg_FAILED) {
- $s9 = $this->peg_parse__();
- if ($s9 !== $this->peg_FAILED) {
- $s10 = $this->peg_c22;
- if ($s10 !== $this->peg_FAILED) {
- if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c11) {
- $s11 = $this->peg_c11;
- $this->peg_currPos++;
- } else {
- $s11 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c12);
- }
- }
- if ($s11 === $this->peg_FAILED) {
- $s11 = null;
- }
- if ($s11 !== $this->peg_FAILED) {
- if ($this->input_substr($this->peg_currPos, 3) === $this->peg_c7) {
- $s12 = $this->peg_c7;
- $this->peg_currPos += 3;
- } else {
- $s12 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c8);
- }
- }
- if ($s12 !== $this->peg_FAILED) {
- $s8 = array($s8, $s9, $s10, $s11, $s12);
- $s7 = $s8;
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s7;
- $s7 = $this->peg_FAILED;
- }
- $this->peg_silentFails--;
- if ($s7 === $this->peg_FAILED) {
- $s6 = null;
- } else {
- $this->peg_currPos = $s6;
- $s6 = $this->peg_FAILED;
- }
- if ($s6 !== $this->peg_FAILED) {
- if ($this->input_length > $this->peg_currPos) {
- $s7 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s7 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c0);
- }
- }
- if ($s7 !== $this->peg_FAILED) {
- $s6 = array($s6, $s7);
- $s5 = $s6;
- } else {
- $this->peg_currPos = $s5;
- $s5 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s5;
- $s5 = $this->peg_FAILED;
- }
- }
- if ($s4 !== $this->peg_FAILED) {
- if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c20) {
- $s5 = $this->peg_c20;
- $this->peg_currPos++;
- } else {
- $s5 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c21);
- }
- }
- if ($s5 !== $this->peg_FAILED) {
- $s3 = array($s3, $s4, $s5);
- $s2 = $s3;
- } else {
- $this->peg_currPos = $s2;
- $s2 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s2;
- $s2 = $this->peg_FAILED;
- }
- } else {
- $this->peg_currPos = $s2;
- $s2 = $this->peg_FAILED;
- }
- if ($s2 !== $this->peg_FAILED) {
- $s1 = $this->input_substr($s1, $this->peg_currPos - $s1);
- } else {
- $s1 = $s2;
- }
- if ($s1 !== $this->peg_FAILED) {
- $this->peg_reportedPos = $s0;
- $s1 = $this->peg_f8($s1);
- }
- $s0 = $s1;
- $this->peg_silentFails--;
- if ($s0 === $this->peg_FAILED) {
- $s1 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c17);
- }
- }
-
- return $s0;
- }
-
- private function peg_parse__() {
-
- $s0 = array();
- if (Gutenberg_PEG_peg_char_class_test($this->peg_c23, $this->input_substr($this->peg_currPos, 1))) {
- $s1 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s1 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c24);
- }
- }
- if ($s1 !== $this->peg_FAILED) {
- while ($s1 !== $this->peg_FAILED) {
- $s0[] = $s1;
- if (Gutenberg_PEG_peg_char_class_test($this->peg_c23, $this->input_substr($this->peg_currPos, 1))) {
- $s1 = $this->input_substr($this->peg_currPos, 1);
- $this->peg_currPos++;
- } else {
- $s1 = $this->peg_FAILED;
- if ($this->peg_silentFails === 0) {
- $this->peg_fail($this->peg_c24);
- }
- }
- }
- } else {
- $s0 = $this->peg_FAILED;
- }
-
- 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);
-
- $this->peg_FAILED = new stdClass;
- $this->peg_c0 = array("type" => "any", "description" => "any character" );
- $this->peg_c1 = "";
- $this->peg_c6 = array( "type" => "literal", "value" => "/-->", "description" => "\"/-->\"" );
- $this->peg_c7 = "-->";
- $this->peg_c8 = array( "type" => "literal", "value" => "-->", "description" => "\"-->\"" );
- $this->peg_c9 = "/wp:";
- $this->peg_c10 = array( "type" => "literal", "value" => "/wp:", "description" => "\"/wp:\"" );
- $this->peg_c11 = "/";
- $this->peg_c12 = array( "type" => "literal", "value" => "/", "description" => "\"/\"" );
- $this->peg_c13 = array(array(97,122));
- $this->peg_c14 = array( "type" => "class", "value" => "[a-z]", "description" => "[a-z]" );
- $this->peg_c15 = array(array(97,122), array(48,57), array(95,95), array(45,45));
- $this->peg_c16 = array( "type" => "class", "value" => "[a-z0-9_-]", "description" => "[a-z0-9_-]" );
- $this->peg_c17 = array("type" => "other", "description" => "JSON-encoded attributes embedded in a block's opening comment" );
- $this->peg_c18 = "{";
- $this->peg_c19 = array( "type" => "literal", "value" => "{", "description" => "\"{\"" );
- $this->peg_c20 = "}";
- $this->peg_c21 = array( "type" => "literal", "value" => "}", "description" => "\"}\"" );
- $this->peg_c22 = "";
- $this->peg_c23 = array(array(32,32), array(9,9), array(13,13), array(10,10));
- $this->peg_c24 = array( "type" => "class", "value" => "[ \t\r\n]", "description" => "[ \t\r\n]" );
-
- $peg_startRuleFunctions = array( 'Block_List' => array($this, "peg_parseBlock_List") );
- $peg_startRuleFunction = array($this, "peg_parseBlock_List");
- 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"]];
- }
-
- /* BEGIN initializer code */
-
- // The `maybeJSON` function is not needed in PHP because its return semantics
- // are the same as `json_decode`
-
- if ( ! function_exists( 'peg_empty_attrs' ) ) {
- function peg_empty_attrs() {
- static $empty_attrs = null;
-
- if ( null === $empty_attrs ) {
- $empty_attrs = json_decode( '{}', true );
- }
-
- return $empty_attrs;
- }
- }
-
- // array arguments are backwards because of PHP
- if ( ! function_exists( 'peg_process_inner_content' ) ) {
- function peg_process_inner_content( $array ) {
- $html = '';
- $blocks = array();
- $content = array();
-
- foreach ( $array as $item ) {
- if ( is_string( $item ) ) {
- $html .= $item;
- $content[] = $item;
- } else {
- $blocks[] = $item;
- $content[] = null;
- }
- }
-
- return array( $html, $blocks, $content );
- }
- }
-
- if ( ! function_exists( 'peg_join_blocks' ) ) {
- function peg_join_blocks( $pre, $tokens, $post ) {
- $blocks = array();
-
- if ( ! empty( $pre ) ) {
- $blocks[] = array(
- 'blockName' => null,
- 'attrs' => peg_empty_attrs(),
- 'innerBlocks' => array(),
- 'innerHTML' => $pre,
- 'innerContent' => array( $pre ),
- );
- }
-
- foreach ( $tokens as $token ) {
- list( $token, $html ) = $token;
-
- $blocks[] = $token;
-
- if ( ! empty( $html ) ) {
- $blocks[] = array(
- 'blockName' => null,
- 'attrs' => peg_empty_attrs(),
- 'innerBlocks' => array(),
- 'innerHTML' => $html,
- 'innerContent' => array( $html ),
- );
- }
- }
-
- if ( ! empty( $post ) ) {
- $blocks[] = array(
- 'blockName' => null,
- 'attrs' => peg_empty_attrs(),
- 'innerBlocks' => array(),
- 'innerHTML' => $post,
- 'innerContent' => array( $post ),
- );
- }
-
- return $blocks;
- }
- }
-
-
- /* END initializer code */
-
- $peg_result = call_user_func($peg_startRuleFunction);
-
- 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;
- }
- }
-
-};
\ No newline at end of file
diff --git a/packages/block-serialization-spec-parser/.gitignore b/packages/block-serialization-spec-parser/.gitignore
new file mode 100644
index 00000000000000..9fd357b5956f01
--- /dev/null
+++ b/packages/block-serialization-spec-parser/.gitignore
@@ -0,0 +1,3 @@
+# Build Artifacts
+parser.js
+parser.php
diff --git a/packages/block-serialization-spec-parser/.npmignore b/packages/block-serialization-spec-parser/.npmignore
new file mode 100644
index 00000000000000..efd9db21d6ec06
--- /dev/null
+++ b/packages/block-serialization-spec-parser/.npmignore
@@ -0,0 +1,2 @@
+# Intentionally empty, to avoid inheriting from `.gitignore`, since `parser.js`
+# and `parser.php` should be included with the npm distributable.
diff --git a/packages/block-serialization-spec-parser/CHANGELOG.md b/packages/block-serialization-spec-parser/CHANGELOG.md
index c2db52c417908f..e4f403ffd68497 100644
--- a/packages/block-serialization-spec-parser/CHANGELOG.md
+++ b/packages/block-serialization-spec-parser/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.1.0 (Unreleased)
+
+- A `parser.php` file generated from the PEGJS grammar is now included.
+
## 2.0.2 (2018-12-12)
## 2.0.1 (2018-11-30)
diff --git a/bin/create-php-parser.js b/packages/block-serialization-spec-parser/bin/create-php-parser.js
similarity index 71%
rename from bin/create-php-parser.js
rename to packages/block-serialization-spec-parser/bin/create-php-parser.js
index 0d661ff0f906bd..c9e48a200fa48a 100755
--- a/bin/create-php-parser.js
+++ b/packages/block-serialization-spec-parser/bin/create-php-parser.js
@@ -5,7 +5,7 @@ const phpegjs = require( 'phpegjs' );
const fs = require( 'fs' );
const path = require( 'path' );
-const peg = fs.readFileSync( 'packages/block-serialization-spec-parser/grammar.pegjs', 'utf8' );
+const peg = fs.readFileSync( path.join( __dirname, '..', 'grammar.pegjs' ), 'utf8' );
const parser = pegjs.generate(
peg,
@@ -20,6 +20,6 @@ const parser = pegjs.generate(
);
fs.writeFileSync(
- path.join( __dirname, '..', 'lib', 'parser.php' ),
+ path.join( __dirname, '..', 'parser.php' ),
parser
);
diff --git a/packages/block-serialization-spec-parser/package.json b/packages/block-serialization-spec-parser/package.json
index 16ca5152589777..918c269169f09f 100644
--- a/packages/block-serialization-spec-parser/package.json
+++ b/packages/block-serialization-spec-parser/package.json
@@ -22,6 +22,8 @@
"access": "public"
},
"scripts": {
- "build": "pegjs --format umd -o ./parser.js ./grammar.pegjs"
+ "build": "concurrently \"npm run build:js\" \"npm run build:php\"",
+ "build:js": "pegjs --format umd -o ./parser.js ./grammar.pegjs",
+ "build:php": "node bin/create-php-parser.js"
}
}
diff --git a/packages/block-serialization-spec-parser/parser.js b/packages/block-serialization-spec-parser/parser.js
deleted file mode 100644
index be39ccaa3046d6..00000000000000
--- a/packages/block-serialization-spec-parser/parser.js
+++ /dev/null
@@ -1,1791 +0,0 @@
-/*
- * Generated by PEG.js 0.10.0.
- *
- * http://pegjs.org/
- */
-(function(root, factory) {
- if (typeof define === "function" && define.amd) {
- define([], factory);
- } else if (typeof module === "object" && module.exports) {
- module.exports = factory();
- }
-})(this, function() {
- "use strict";
-
- function peg$subclass(child, parent) {
- function ctor() { this.constructor = child; }
- ctor.prototype = parent.prototype;
- child.prototype = new ctor();
- }
-
- function peg$SyntaxError(message, expected, found, location) {
- this.message = message;
- this.expected = expected;
- this.found = found;
- this.location = location;
- this.name = "SyntaxError";
-
- if (typeof Error.captureStackTrace === "function") {
- Error.captureStackTrace(this, peg$SyntaxError);
- }
- }
-
- peg$subclass(peg$SyntaxError, Error);
-
- peg$SyntaxError.buildMessage = function(expected, found) {
- var DESCRIBE_EXPECTATION_FNS = {
- literal: function(expectation) {
- return "\"" + literalEscape(expectation.text) + "\"";
- },
-
- "class": function(expectation) {
- var escapedParts = "",
- i;
-
- for (i = 0; i < expectation.parts.length; i++) {
- escapedParts += expectation.parts[i] instanceof Array
- ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1])
- : classEscape(expectation.parts[i]);
- }
-
- return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]";
- },
-
- any: function(expectation) {
- return "any character";
- },
-
- end: function(expectation) {
- return "end of input";
- },
-
- other: function(expectation) {
- return expectation.description;
- }
- };
-
- function hex(ch) {
- return ch.charCodeAt(0).toString(16).toUpperCase();
- }
-
- function literalEscape(s) {
- return s
- .replace(/\\/g, '\\\\')
- .replace(/"/g, '\\"')
- .replace(/\0/g, '\\0')
- .replace(/\t/g, '\\t')
- .replace(/\n/g, '\\n')
- .replace(/\r/g, '\\r')
- .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); })
- .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); });
- }
-
- function classEscape(s) {
- return s
- .replace(/\\/g, '\\\\')
- .replace(/\]/g, '\\]')
- .replace(/\^/g, '\\^')
- .replace(/-/g, '\\-')
- .replace(/\0/g, '\\0')
- .replace(/\t/g, '\\t')
- .replace(/\n/g, '\\n')
- .replace(/\r/g, '\\r')
- .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); })
- .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); });
- }
-
- function describeExpectation(expectation) {
- return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
- }
-
- function describeExpected(expected) {
- var descriptions = new Array(expected.length),
- i, j;
-
- for (i = 0; i < expected.length; i++) {
- descriptions[i] = describeExpectation(expected[i]);
- }
-
- descriptions.sort();
-
- if (descriptions.length > 0) {
- for (i = 1, j = 1; i < descriptions.length; i++) {
- if (descriptions[i - 1] !== descriptions[i]) {
- descriptions[j] = descriptions[i];
- j++;
- }
- }
- descriptions.length = j;
- }
-
- switch (descriptions.length) {
- case 1:
- return descriptions[0];
-
- case 2:
- return descriptions[0] + " or " + descriptions[1];
-
- default:
- return descriptions.slice(0, -1).join(", ")
- + ", or "
- + descriptions[descriptions.length - 1];
- }
- }
-
- function describeFound(found) {
- return found ? "\"" + literalEscape(found) + "\"" : "end of input";
- }
-
- return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found.";
- };
-
- function peg$parse(input, options) {
- options = options !== void 0 ? options : {};
-
- var peg$FAILED = {},
-
- peg$startRuleFunctions = { Block_List: peg$parseBlock_List },
- peg$startRuleFunction = peg$parseBlock_List,
-
- peg$c0 = peg$anyExpectation(),
- peg$c1 = function(pre, b, html) { /** **/ return [ b, html ] },
- peg$c2 = function(pre, bs, post) { /** **/
- return joinBlocks( pre, bs, post );
- },
- peg$c3 = "",
- peg$c9 = peg$literalExpectation("/-->", false),
- peg$c10 = function(blockName, attrs) {
- /** $blockName,
- 'attrs' => empty( $attrs ) ? peg_empty_attrs() : $attrs,
- 'innerBlocks' => array(),
- 'innerHTML' => '',
- 'innerContent' => array(),
- );
- ?> **/
-
- return {
- blockName: blockName,
- attrs: attrs || {},
- innerBlocks: [],
- innerHTML: '',
- innerContent: []
- };
- },
- peg$c11 = function(s, children, e) {
- /** $s['blockName'],
- 'attrs' => empty( $s['attrs'] ) ? peg_empty_attrs() : $s['attrs'],
- 'innerBlocks' => $innerBlocks,
- 'innerHTML' => $innerHTML,
- 'innerContent' => $innerContent,
- );
- ?> **/
-
- var innerParts = processInnerContent( children );
- var innerHTML = innerParts[ 0 ];
- var innerBlocks = innerParts[ 1 ];
- var innerContent = innerParts[ 2 ];
-
- return {
- blockName: s.blockName,
- attrs: s.attrs,
- innerBlocks: innerBlocks,
- innerHTML: innerHTML,
- innerContent: innerContent,
- };
- },
- peg$c12 = "-->",
- peg$c13 = peg$literalExpectation("-->", false),
- peg$c14 = function(blockName, attrs) {
- /** $blockName,
- 'attrs' => isset( $attrs ) ? $attrs : array(),
- );
- ?> **/
-
- return {
- blockName: blockName,
- attrs: attrs || {}
- };
- },
- peg$c15 = "/wp:",
- peg$c16 = peg$literalExpectation("/wp:", false),
- peg$c17 = function(blockName) {
- /** $blockName,
- );
- ?> **/
-
- return {
- blockName: blockName
- };
- },
- peg$c18 = "/",
- peg$c19 = peg$literalExpectation("/", false),
- peg$c20 = function(type) {
- /** **/
- return 'core/' + type;
- },
- peg$c21 = /^[a-z]/,
- peg$c22 = peg$classExpectation([["a", "z"]], false, false),
- peg$c23 = /^[a-z0-9_\-]/,
- peg$c24 = peg$classExpectation([["a", "z"], ["0", "9"], "_", "-"], false, false),
- peg$c25 = peg$otherExpectation("JSON-encoded attributes embedded in a block's opening comment"),
- peg$c26 = "{",
- peg$c27 = peg$literalExpectation("{", false),
- peg$c28 = "}",
- peg$c29 = peg$literalExpectation("}", false),
- peg$c30 = "",
- peg$c31 = function(attrs) {
- /** **/
- return maybeJSON( attrs );
- },
- peg$c32 = /^[ \t\r\n]/,
- peg$c33 = peg$classExpectation([" ", "\t", "\r", "\n"], false, false),
-
- peg$currPos = 0,
- peg$savedPos = 0,
- peg$posDetailsCache = [{ line: 1, column: 1 }],
- peg$maxFailPos = 0,
- peg$maxFailExpected = [],
- peg$silentFails = 0,
-
- peg$result;
-
- if ("startRule" in options) {
- if (!(options.startRule in peg$startRuleFunctions)) {
- throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
- }
-
- peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
- }
-
- function text() {
- return input.substring(peg$savedPos, peg$currPos);
- }
-
- function location() {
- return peg$computeLocation(peg$savedPos, peg$currPos);
- }
-
- function expected(description, location) {
- location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)
-
- throw peg$buildStructuredError(
- [peg$otherExpectation(description)],
- input.substring(peg$savedPos, peg$currPos),
- location
- );
- }
-
- function error(message, location) {
- location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)
-
- throw peg$buildSimpleError(message, location);
- }
-
- function peg$literalExpectation(text, ignoreCase) {
- return { type: "literal", text: text, ignoreCase: ignoreCase };
- }
-
- function peg$classExpectation(parts, inverted, ignoreCase) {
- return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase };
- }
-
- function peg$anyExpectation() {
- return { type: "any" };
- }
-
- function peg$endExpectation() {
- return { type: "end" };
- }
-
- function peg$otherExpectation(description) {
- return { type: "other", description: description };
- }
-
- function peg$computePosDetails(pos) {
- var details = peg$posDetailsCache[pos], p;
-
- if (details) {
- return details;
- } else {
- p = pos - 1;
- while (!peg$posDetailsCache[p]) {
- p--;
- }
-
- details = peg$posDetailsCache[p];
- details = {
- line: details.line,
- column: details.column
- };
-
- while (p < pos) {
- if (input.charCodeAt(p) === 10) {
- details.line++;
- details.column = 1;
- } else {
- details.column++;
- }
-
- p++;
- }
-
- peg$posDetailsCache[pos] = details;
- return details;
- }
- }
-
- function peg$computeLocation(startPos, endPos) {
- var startPosDetails = peg$computePosDetails(startPos),
- endPosDetails = peg$computePosDetails(endPos);
-
- return {
- start: {
- offset: startPos,
- line: startPosDetails.line,
- column: startPosDetails.column
- },
- end: {
- offset: endPos,
- line: endPosDetails.line,
- column: endPosDetails.column
- }
- };
- }
-
- function peg$fail(expected) {
- if (peg$currPos < peg$maxFailPos) { return; }
-
- if (peg$currPos > peg$maxFailPos) {
- peg$maxFailPos = peg$currPos;
- peg$maxFailExpected = [];
- }
-
- peg$maxFailExpected.push(expected);
- }
-
- function peg$buildSimpleError(message, location) {
- return new peg$SyntaxError(message, null, null, location);
- }
-
- function peg$buildStructuredError(expected, found, location) {
- return new peg$SyntaxError(
- peg$SyntaxError.buildMessage(expected, found),
- expected,
- found,
- location
- );
- }
-
- function peg$parseBlock_List() {
- var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
-
- s0 = peg$currPos;
- s1 = peg$currPos;
- s2 = [];
- s3 = peg$currPos;
- s4 = peg$currPos;
- peg$silentFails++;
- s5 = peg$parseBlock();
- peg$silentFails--;
- if (s5 === peg$FAILED) {
- s4 = void 0;
- } else {
- peg$currPos = s4;
- s4 = peg$FAILED;
- }
- if (s4 !== peg$FAILED) {
- if (input.length > peg$currPos) {
- s5 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s5 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c0); }
- }
- if (s5 !== peg$FAILED) {
- s4 = [s4, s5];
- s3 = s4;
- } else {
- peg$currPos = s3;
- s3 = peg$FAILED;
- }
- } else {
- peg$currPos = s3;
- s3 = peg$FAILED;
- }
- while (s3 !== peg$FAILED) {
- s2.push(s3);
- s3 = peg$currPos;
- s4 = peg$currPos;
- peg$silentFails++;
- s5 = peg$parseBlock();
- peg$silentFails--;
- if (s5 === peg$FAILED) {
- s4 = void 0;
- } else {
- peg$currPos = s4;
- s4 = peg$FAILED;
- }
- if (s4 !== peg$FAILED) {
- if (input.length > peg$currPos) {
- s5 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s5 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c0); }
- }
- if (s5 !== peg$FAILED) {
- s4 = [s4, s5];
- s3 = s4;
- } else {
- peg$currPos = s3;
- s3 = peg$FAILED;
- }
- } else {
- peg$currPos = s3;
- s3 = peg$FAILED;
- }
- }
- if (s2 !== peg$FAILED) {
- s1 = input.substring(s1, peg$currPos);
- } else {
- s1 = s2;
- }
- if (s1 !== peg$FAILED) {
- s2 = [];
- s3 = peg$currPos;
- s4 = peg$parseBlock();
- if (s4 !== peg$FAILED) {
- s5 = peg$currPos;
- s6 = [];
- s7 = peg$currPos;
- s8 = peg$currPos;
- peg$silentFails++;
- s9 = peg$parseBlock();
- peg$silentFails--;
- if (s9 === peg$FAILED) {
- s8 = void 0;
- } else {
- peg$currPos = s8;
- s8 = peg$FAILED;
- }
- if (s8 !== peg$FAILED) {
- if (input.length > peg$currPos) {
- s9 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s9 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c0); }
- }
- if (s9 !== peg$FAILED) {
- s8 = [s8, s9];
- s7 = s8;
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- while (s7 !== peg$FAILED) {
- s6.push(s7);
- s7 = peg$currPos;
- s8 = peg$currPos;
- peg$silentFails++;
- s9 = peg$parseBlock();
- peg$silentFails--;
- if (s9 === peg$FAILED) {
- s8 = void 0;
- } else {
- peg$currPos = s8;
- s8 = peg$FAILED;
- }
- if (s8 !== peg$FAILED) {
- if (input.length > peg$currPos) {
- s9 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s9 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c0); }
- }
- if (s9 !== peg$FAILED) {
- s8 = [s8, s9];
- s7 = s8;
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- }
- if (s6 !== peg$FAILED) {
- s5 = input.substring(s5, peg$currPos);
- } else {
- s5 = s6;
- }
- if (s5 !== peg$FAILED) {
- peg$savedPos = s3;
- s4 = peg$c1(s1, s4, s5);
- s3 = s4;
- } else {
- peg$currPos = s3;
- s3 = peg$FAILED;
- }
- } else {
- peg$currPos = s3;
- s3 = peg$FAILED;
- }
- while (s3 !== peg$FAILED) {
- s2.push(s3);
- s3 = peg$currPos;
- s4 = peg$parseBlock();
- if (s4 !== peg$FAILED) {
- s5 = peg$currPos;
- s6 = [];
- s7 = peg$currPos;
- s8 = peg$currPos;
- peg$silentFails++;
- s9 = peg$parseBlock();
- peg$silentFails--;
- if (s9 === peg$FAILED) {
- s8 = void 0;
- } else {
- peg$currPos = s8;
- s8 = peg$FAILED;
- }
- if (s8 !== peg$FAILED) {
- if (input.length > peg$currPos) {
- s9 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s9 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c0); }
- }
- if (s9 !== peg$FAILED) {
- s8 = [s8, s9];
- s7 = s8;
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- while (s7 !== peg$FAILED) {
- s6.push(s7);
- s7 = peg$currPos;
- s8 = peg$currPos;
- peg$silentFails++;
- s9 = peg$parseBlock();
- peg$silentFails--;
- if (s9 === peg$FAILED) {
- s8 = void 0;
- } else {
- peg$currPos = s8;
- s8 = peg$FAILED;
- }
- if (s8 !== peg$FAILED) {
- if (input.length > peg$currPos) {
- s9 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s9 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c0); }
- }
- if (s9 !== peg$FAILED) {
- s8 = [s8, s9];
- s7 = s8;
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- }
- if (s6 !== peg$FAILED) {
- s5 = input.substring(s5, peg$currPos);
- } else {
- s5 = s6;
- }
- if (s5 !== peg$FAILED) {
- peg$savedPos = s3;
- s4 = peg$c1(s1, s4, s5);
- s3 = s4;
- } else {
- peg$currPos = s3;
- s3 = peg$FAILED;
- }
- } else {
- peg$currPos = s3;
- s3 = peg$FAILED;
- }
- }
- if (s2 !== peg$FAILED) {
- s3 = peg$currPos;
- s4 = [];
- if (input.length > peg$currPos) {
- s5 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s5 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c0); }
- }
- while (s5 !== peg$FAILED) {
- s4.push(s5);
- if (input.length > peg$currPos) {
- s5 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s5 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c0); }
- }
- }
- if (s4 !== peg$FAILED) {
- s3 = input.substring(s3, peg$currPos);
- } else {
- s3 = s4;
- }
- if (s3 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c2(s1, s2, s3);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
-
- return s0;
- }
-
- function peg$parseBlock() {
- var s0;
-
- s0 = peg$parseBlock_Void();
- if (s0 === peg$FAILED) {
- s0 = peg$parseBlock_Balanced();
- }
-
- return s0;
- }
-
- function peg$parseBlock_Void() {
- var s0, s1, s2, s3, s4, s5, s6, s7, s8;
-
- s0 = peg$currPos;
- if (input.substr(peg$currPos, 4) === peg$c3) {
- s1 = peg$c3;
- peg$currPos += 4;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c4); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parse__();
- if (s2 !== peg$FAILED) {
- if (input.substr(peg$currPos, 3) === peg$c5) {
- s3 = peg$c5;
- peg$currPos += 3;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c6); }
- }
- if (s3 !== peg$FAILED) {
- s4 = peg$parseBlock_Name();
- if (s4 !== peg$FAILED) {
- s5 = peg$parse__();
- if (s5 !== peg$FAILED) {
- s6 = peg$currPos;
- s7 = peg$parseBlock_Attributes();
- if (s7 !== peg$FAILED) {
- s8 = peg$parse__();
- if (s8 !== peg$FAILED) {
- peg$savedPos = s6;
- s7 = peg$c7(s4, s7);
- s6 = s7;
- } else {
- peg$currPos = s6;
- s6 = peg$FAILED;
- }
- } else {
- peg$currPos = s6;
- s6 = peg$FAILED;
- }
- if (s6 === peg$FAILED) {
- s6 = null;
- }
- if (s6 !== peg$FAILED) {
- if (input.substr(peg$currPos, 4) === peg$c8) {
- s7 = peg$c8;
- peg$currPos += 4;
- } else {
- s7 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c9); }
- }
- if (s7 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c10(s4, s6);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
-
- return s0;
- }
-
- function peg$parseBlock_Balanced() {
- var s0, s1, s2, s3, s4, s5, s6, s7, s8;
-
- s0 = peg$currPos;
- s1 = peg$parseBlock_Start();
- if (s1 !== peg$FAILED) {
- s2 = [];
- s3 = peg$parseBlock();
- if (s3 === peg$FAILED) {
- s3 = peg$currPos;
- s4 = [];
- s5 = peg$currPos;
- s6 = peg$currPos;
- peg$silentFails++;
- s7 = peg$parseBlock();
- peg$silentFails--;
- if (s7 === peg$FAILED) {
- s6 = void 0;
- } else {
- peg$currPos = s6;
- s6 = peg$FAILED;
- }
- if (s6 !== peg$FAILED) {
- s7 = peg$currPos;
- peg$silentFails++;
- s8 = peg$parseBlock_End();
- peg$silentFails--;
- if (s8 === peg$FAILED) {
- s7 = void 0;
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- if (s7 !== peg$FAILED) {
- if (input.length > peg$currPos) {
- s8 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s8 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c0); }
- }
- if (s8 !== peg$FAILED) {
- s6 = [s6, s7, s8];
- s5 = s6;
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- if (s5 !== peg$FAILED) {
- while (s5 !== peg$FAILED) {
- s4.push(s5);
- s5 = peg$currPos;
- s6 = peg$currPos;
- peg$silentFails++;
- s7 = peg$parseBlock();
- peg$silentFails--;
- if (s7 === peg$FAILED) {
- s6 = void 0;
- } else {
- peg$currPos = s6;
- s6 = peg$FAILED;
- }
- if (s6 !== peg$FAILED) {
- s7 = peg$currPos;
- peg$silentFails++;
- s8 = peg$parseBlock_End();
- peg$silentFails--;
- if (s8 === peg$FAILED) {
- s7 = void 0;
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- if (s7 !== peg$FAILED) {
- if (input.length > peg$currPos) {
- s8 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s8 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c0); }
- }
- if (s8 !== peg$FAILED) {
- s6 = [s6, s7, s8];
- s5 = s6;
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- }
- } else {
- s4 = peg$FAILED;
- }
- if (s4 !== peg$FAILED) {
- s3 = input.substring(s3, peg$currPos);
- } else {
- s3 = s4;
- }
- }
- while (s3 !== peg$FAILED) {
- s2.push(s3);
- s3 = peg$parseBlock();
- if (s3 === peg$FAILED) {
- s3 = peg$currPos;
- s4 = [];
- s5 = peg$currPos;
- s6 = peg$currPos;
- peg$silentFails++;
- s7 = peg$parseBlock();
- peg$silentFails--;
- if (s7 === peg$FAILED) {
- s6 = void 0;
- } else {
- peg$currPos = s6;
- s6 = peg$FAILED;
- }
- if (s6 !== peg$FAILED) {
- s7 = peg$currPos;
- peg$silentFails++;
- s8 = peg$parseBlock_End();
- peg$silentFails--;
- if (s8 === peg$FAILED) {
- s7 = void 0;
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- if (s7 !== peg$FAILED) {
- if (input.length > peg$currPos) {
- s8 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s8 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c0); }
- }
- if (s8 !== peg$FAILED) {
- s6 = [s6, s7, s8];
- s5 = s6;
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- if (s5 !== peg$FAILED) {
- while (s5 !== peg$FAILED) {
- s4.push(s5);
- s5 = peg$currPos;
- s6 = peg$currPos;
- peg$silentFails++;
- s7 = peg$parseBlock();
- peg$silentFails--;
- if (s7 === peg$FAILED) {
- s6 = void 0;
- } else {
- peg$currPos = s6;
- s6 = peg$FAILED;
- }
- if (s6 !== peg$FAILED) {
- s7 = peg$currPos;
- peg$silentFails++;
- s8 = peg$parseBlock_End();
- peg$silentFails--;
- if (s8 === peg$FAILED) {
- s7 = void 0;
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- if (s7 !== peg$FAILED) {
- if (input.length > peg$currPos) {
- s8 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s8 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c0); }
- }
- if (s8 !== peg$FAILED) {
- s6 = [s6, s7, s8];
- s5 = s6;
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- }
- } else {
- s4 = peg$FAILED;
- }
- if (s4 !== peg$FAILED) {
- s3 = input.substring(s3, peg$currPos);
- } else {
- s3 = s4;
- }
- }
- }
- if (s2 !== peg$FAILED) {
- s3 = peg$parseBlock_End();
- if (s3 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c11(s1, s2, s3);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
-
- return s0;
- }
-
- function peg$parseBlock_Start() {
- var s0, s1, s2, s3, s4, s5, s6, s7, s8;
-
- s0 = peg$currPos;
- if (input.substr(peg$currPos, 4) === peg$c3) {
- s1 = peg$c3;
- peg$currPos += 4;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c4); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parse__();
- if (s2 !== peg$FAILED) {
- if (input.substr(peg$currPos, 3) === peg$c5) {
- s3 = peg$c5;
- peg$currPos += 3;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c6); }
- }
- if (s3 !== peg$FAILED) {
- s4 = peg$parseBlock_Name();
- if (s4 !== peg$FAILED) {
- s5 = peg$parse__();
- if (s5 !== peg$FAILED) {
- s6 = peg$currPos;
- s7 = peg$parseBlock_Attributes();
- if (s7 !== peg$FAILED) {
- s8 = peg$parse__();
- if (s8 !== peg$FAILED) {
- peg$savedPos = s6;
- s7 = peg$c7(s4, s7);
- s6 = s7;
- } else {
- peg$currPos = s6;
- s6 = peg$FAILED;
- }
- } else {
- peg$currPos = s6;
- s6 = peg$FAILED;
- }
- if (s6 === peg$FAILED) {
- s6 = null;
- }
- if (s6 !== peg$FAILED) {
- if (input.substr(peg$currPos, 3) === peg$c12) {
- s7 = peg$c12;
- peg$currPos += 3;
- } else {
- s7 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c13); }
- }
- if (s7 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c14(s4, s6);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
-
- return s0;
- }
-
- function peg$parseBlock_End() {
- var s0, s1, s2, s3, s4, s5, s6;
-
- s0 = peg$currPos;
- if (input.substr(peg$currPos, 4) === peg$c3) {
- s1 = peg$c3;
- peg$currPos += 4;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c4); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parse__();
- if (s2 !== peg$FAILED) {
- if (input.substr(peg$currPos, 4) === peg$c15) {
- s3 = peg$c15;
- peg$currPos += 4;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c16); }
- }
- if (s3 !== peg$FAILED) {
- s4 = peg$parseBlock_Name();
- if (s4 !== peg$FAILED) {
- s5 = peg$parse__();
- if (s5 !== peg$FAILED) {
- if (input.substr(peg$currPos, 3) === peg$c12) {
- s6 = peg$c12;
- peg$currPos += 3;
- } else {
- s6 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c13); }
- }
- if (s6 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c17(s4);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
-
- return s0;
- }
-
- function peg$parseBlock_Name() {
- var s0;
-
- s0 = peg$parseNamespaced_Block_Name();
- if (s0 === peg$FAILED) {
- s0 = peg$parseCore_Block_Name();
- }
-
- return s0;
- }
-
- function peg$parseNamespaced_Block_Name() {
- var s0, s1, s2, s3, s4;
-
- s0 = peg$currPos;
- s1 = peg$currPos;
- s2 = peg$parseBlock_Name_Part();
- if (s2 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 47) {
- s3 = peg$c18;
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c19); }
- }
- if (s3 !== peg$FAILED) {
- s4 = peg$parseBlock_Name_Part();
- if (s4 !== peg$FAILED) {
- s2 = [s2, s3, s4];
- s1 = s2;
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- if (s1 !== peg$FAILED) {
- s0 = input.substring(s0, peg$currPos);
- } else {
- s0 = s1;
- }
-
- return s0;
- }
-
- function peg$parseCore_Block_Name() {
- var s0, s1, s2;
-
- s0 = peg$currPos;
- s1 = peg$currPos;
- s2 = peg$parseBlock_Name_Part();
- if (s2 !== peg$FAILED) {
- s1 = input.substring(s1, peg$currPos);
- } else {
- s1 = s2;
- }
- if (s1 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c20(s1);
- }
- s0 = s1;
-
- return s0;
- }
-
- function peg$parseBlock_Name_Part() {
- var s0, s1, s2, s3, s4;
-
- s0 = peg$currPos;
- s1 = peg$currPos;
- if (peg$c21.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c22); }
- }
- if (s2 !== peg$FAILED) {
- s3 = [];
- if (peg$c23.test(input.charAt(peg$currPos))) {
- s4 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c24); }
- }
- while (s4 !== peg$FAILED) {
- s3.push(s4);
- if (peg$c23.test(input.charAt(peg$currPos))) {
- s4 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c24); }
- }
- }
- if (s3 !== peg$FAILED) {
- s2 = [s2, s3];
- s1 = s2;
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- if (s1 !== peg$FAILED) {
- s0 = input.substring(s0, peg$currPos);
- } else {
- s0 = s1;
- }
-
- return s0;
- }
-
- function peg$parseBlock_Attributes() {
- var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;
-
- peg$silentFails++;
- s0 = peg$currPos;
- s1 = peg$currPos;
- s2 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 123) {
- s3 = peg$c26;
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c27); }
- }
- if (s3 !== peg$FAILED) {
- s4 = [];
- s5 = peg$currPos;
- s6 = peg$currPos;
- peg$silentFails++;
- s7 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 125) {
- s8 = peg$c28;
- peg$currPos++;
- } else {
- s8 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c29); }
- }
- if (s8 !== peg$FAILED) {
- s9 = peg$parse__();
- if (s9 !== peg$FAILED) {
- s10 = peg$c30;
- if (s10 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 47) {
- s11 = peg$c18;
- peg$currPos++;
- } else {
- s11 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c19); }
- }
- if (s11 === peg$FAILED) {
- s11 = null;
- }
- if (s11 !== peg$FAILED) {
- if (input.substr(peg$currPos, 3) === peg$c12) {
- s12 = peg$c12;
- peg$currPos += 3;
- } else {
- s12 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c13); }
- }
- if (s12 !== peg$FAILED) {
- s8 = [s8, s9, s10, s11, s12];
- s7 = s8;
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- peg$silentFails--;
- if (s7 === peg$FAILED) {
- s6 = void 0;
- } else {
- peg$currPos = s6;
- s6 = peg$FAILED;
- }
- if (s6 !== peg$FAILED) {
- if (input.length > peg$currPos) {
- s7 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s7 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c0); }
- }
- if (s7 !== peg$FAILED) {
- s6 = [s6, s7];
- s5 = s6;
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- while (s5 !== peg$FAILED) {
- s4.push(s5);
- s5 = peg$currPos;
- s6 = peg$currPos;
- peg$silentFails++;
- s7 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 125) {
- s8 = peg$c28;
- peg$currPos++;
- } else {
- s8 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c29); }
- }
- if (s8 !== peg$FAILED) {
- s9 = peg$parse__();
- if (s9 !== peg$FAILED) {
- s10 = peg$c30;
- if (s10 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 47) {
- s11 = peg$c18;
- peg$currPos++;
- } else {
- s11 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c19); }
- }
- if (s11 === peg$FAILED) {
- s11 = null;
- }
- if (s11 !== peg$FAILED) {
- if (input.substr(peg$currPos, 3) === peg$c12) {
- s12 = peg$c12;
- peg$currPos += 3;
- } else {
- s12 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c13); }
- }
- if (s12 !== peg$FAILED) {
- s8 = [s8, s9, s10, s11, s12];
- s7 = s8;
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- } else {
- peg$currPos = s7;
- s7 = peg$FAILED;
- }
- peg$silentFails--;
- if (s7 === peg$FAILED) {
- s6 = void 0;
- } else {
- peg$currPos = s6;
- s6 = peg$FAILED;
- }
- if (s6 !== peg$FAILED) {
- if (input.length > peg$currPos) {
- s7 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s7 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c0); }
- }
- if (s7 !== peg$FAILED) {
- s6 = [s6, s7];
- s5 = s6;
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- }
- if (s4 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 125) {
- s5 = peg$c28;
- peg$currPos++;
- } else {
- s5 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c29); }
- }
- if (s5 !== peg$FAILED) {
- s3 = [s3, s4, s5];
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- if (s2 !== peg$FAILED) {
- s1 = input.substring(s1, peg$currPos);
- } else {
- s1 = s2;
- }
- if (s1 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c31(s1);
- }
- s0 = s1;
- peg$silentFails--;
- if (s0 === peg$FAILED) {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c25); }
- }
-
- return s0;
- }
-
- function peg$parse__() {
- var s0, s1;
-
- s0 = [];
- if (peg$c32.test(input.charAt(peg$currPos))) {
- s1 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c33); }
- }
- if (s1 !== peg$FAILED) {
- while (s1 !== peg$FAILED) {
- s0.push(s1);
- if (peg$c32.test(input.charAt(peg$currPos))) {
- s1 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c33); }
- }
- }
- } else {
- s0 = peg$FAILED;
- }
-
- return s0;
- }
-
-
-
- /*
- *
- * _____ _ _
- * / ____| | | | |
- * | | __ _ _| |_ ___ _ __ | |__ ___ _ __ __ _
- * | | |_ | | | | __/ _ \ '_ \| '_ \ / _ \ '__/ _` |
- * | |__| | |_| | || __/ | | | |_) | __/ | | (_| |
- * \_____|\__,_|\__\___|_| |_|_.__/ \___|_| \__, |
- * __/ |
- * GRAMMAR |___/
- *
- *
- * Welcome to the grammar file for Gutenberg posts!
- *
- * Please don't be distracted by the functions at the top
- * here - they're just helpers for the grammar below. We
- * try to keep them as minimal and simple as possible,
- * but the parser generator forces us to declare them at
- * the beginning of the file.
- *
- * What follows is the official specification grammar for
- * documents created or edited in Gutenberg. It starts at
- * the top-level rule `Block_List`
- *
- * The grammar is defined by a series of _rules_ and ways
- * to return matches on those rules. It's a _PEG_, a
- * parsing expression grammar, which simply means that for
- * each of our rules we have a set of sub-rules to match
- * on and the generated parser will try them in order
- * until it finds the first match.
- *
- * This grammar is a _specification_ (with as little actual
- * code as we can get away with) which is used by the
- * parser generator to generate the actual _parser_ which
- * is used by Gutenberg. We generate two parsers: one in
- * JavaScript for use the browser and one in PHP for
- * WordPress itself. PEG parser generators are available
- * in many languages, though different libraries may require
- * some translation of this grammar into their syntax.
- *
- * For more information:
- * @see https://pegjs.org
- * @see https://en.wikipedia.org/wiki/Parsing_expression_grammar
- *
- */
-
- /** null,
- 'attrs' => peg_empty_attrs(),
- 'innerBlocks' => array(),
- 'innerHTML' => $pre,
- 'innerContent' => array( $pre ),
- );
- }
-
- foreach ( $tokens as $token ) {
- list( $token, $html ) = $token;
-
- $blocks[] = $token;
-
- if ( ! empty( $html ) ) {
- $blocks[] = array(
- 'blockName' => null,
- 'attrs' => peg_empty_attrs(),
- 'innerBlocks' => array(),
- 'innerHTML' => $html,
- 'innerContent' => array( $html ),
- );
- }
- }
-
- if ( ! empty( $post ) ) {
- $blocks[] = array(
- 'blockName' => null,
- 'attrs' => peg_empty_attrs(),
- 'innerBlocks' => array(),
- 'innerHTML' => $post,
- 'innerContent' => array( $post ),
- );
- }
-
- return $blocks;
- }
- }
-
- ?> **/
-
- function freeform( s ) {
- return s.length && {
- blockName: null,
- attrs: {},
- innerBlocks: [],
- innerHTML: s,
- innerContent: [ s ],
- };
- }
-
- function joinBlocks( pre, tokens, post ) {
- var blocks = [], i, l, html, item, token;
-
- if ( pre.length ) {
- blocks.push( freeform( pre ) );
- }
-
- for ( i = 0, l = tokens.length; i < l; i++ ) {
- item = tokens[ i ];
- token = item[ 0 ];
- html = item[ 1 ];
-
- blocks.push( token );
- if ( html.length ) {
- blocks.push( freeform( html ) );
- }
- }
-
- if ( post.length ) {
- blocks.push( freeform( post ) );
- }
-
- return blocks;
- }
-
- function maybeJSON( s ) {
- try {
- return JSON.parse( s );
- } catch (e) {
- return null;
- }
- }
-
- function processInnerContent( list ) {
- var i, l, item;
- var html = '';
- var blocks = [];
- var content = [];
-
- // nod to performance over a simpler reduce
- // and clone model we could have taken here
- for ( i = 0, l = list.length; i < l; i++ ) {
- item = list[ i ];
-
- if ( 'string' === typeof item ) {
- html += item;
- content.push( item );
- } else {
- blocks.push( item );
- content.push( null );
- }
- };
-
- return [ html, blocks, content ];
- }
-
-
-
- peg$result = peg$startRuleFunction();
-
- if (peg$result !== peg$FAILED && peg$currPos === input.length) {
- return peg$result;
- } else {
- if (peg$result !== peg$FAILED && peg$currPos < input.length) {
- peg$fail(peg$endExpectation());
- }
-
- throw peg$buildStructuredError(
- peg$maxFailExpected,
- peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,
- peg$maxFailPos < input.length
- ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)
- : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
- );
- }
- }
-
- return {
- SyntaxError: peg$SyntaxError,
- parse: peg$parse
- };
-});
diff --git a/packages/block-serialization-spec-parser/test/test-parser.php b/packages/block-serialization-spec-parser/test/test-parser.php
index 28c523951c3439..a55183c44b8e5d 100644
--- a/packages/block-serialization-spec-parser/test/test-parser.php
+++ b/packages/block-serialization-spec-parser/test/test-parser.php
@@ -8,7 +8,7 @@
*/
// Include the generated parser.
-require_once dirname( __FILE__ ) . '/../../../lib/parser.php';
+require_once dirname( __FILE__ ) . '/../parser.php';
$parser = new Gutenberg_PEG_Parser();
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
index 9e0d0f2bd2a4b6..85a39fbd82a4ab 100644
--- a/phpcs.xml.dist
+++ b/phpcs.xml.dist
@@ -33,7 +33,7 @@
./languages/gutenberg-translations.php
- ./lib/parser.php
+ ./packages/block-serialization-spec-parser/parser.php
lib/class-wp-rest-block-renderer-controller.php