peg2 0.1.14 copy "peg2: ^0.1.14" to clipboard
peg2: ^0.1.14 copied to clipboard

discontinuedreplaced by: peg
outdated

PEG+ (Parsing expression grammar) parser source code generator, command line tool.

example/example.dart

// Generated by 'peg2'
// https://pub.dev/packages/peg2

void main() {
  final parser = ExampleParser();
  final result = parser.parse(_text);
  if (parser.error != null) {
    throw parser.error;
  }

  print(result);
}

final _text = '''
{"foo": false}
''';

class ExampleParser {
  static const _eof = 0x110000;

  FormatException error;

  int _c;

  List<String> _failures;

  int _fcount;

  int _fposEnd;

  int _fposMax;

  int _fposStart;

  List<int> _input;

  List<bool> _memoizable;

  List<List<_Memo>> _memos;

  var _mresult;

  int _pos;

  bool _predicate;

  dynamic _result;

  bool _success;

  String _text;

  List<int> _trackCid;

  List<int> _trackPos;

  dynamic parse(String text) {
    if (text == null) {
      throw ArgumentError.notNull('text');
    }
    _text = text;
    _input = _toRunes(text);
    _reset();
    final result = _parseJson(0, true);
    _buildError();
    _failures = null;
    _input = null;
    return result;
  }

  void _buildError() {
    if (_success) {
      error = null;
      return;
    }

    String escape(int c) {
      switch (c) {
        case 10:
          return r'\n';
        case 13:
          return r'\r';
        case 09:
          return r'\t';
        case _eof:
          return '';
      }
      return String.fromCharCode(c);
    }

    String getc(int position) {
      if (position < _input.length) {
        return "'${escape(_input[position])}'";
      }
      return 'end of file';
    }

    final temp = _failures.take(_fcount).toList();
    temp.sort((e1, e2) => e1.compareTo(e2));
    final terminals = temp.toSet();
    final hasMalformed = _fposStart != _fposMax;
    if (terminals.isNotEmpty) {
      if (!hasMalformed) {
        final sb = StringBuffer();
        sb.write('Expected ');
        sb.write(terminals.join(', '));
        sb.write(' but found ');
        sb.write(getc(_fposStart));
        final message = sb.toString();
        error = FormatException(message, _text, _fposStart);
      } else {
        final reason = _fposMax < _input.length ? 'Malformed' : 'Unterminated';
        final sb = StringBuffer();
        sb.write(reason);
        sb.write(' ');
        sb.write(terminals.join(', '));
        final message = sb.toString();
        error = FormatException(message, _text, _fposStart);
      }
    } else {
      final sb = StringBuffer();
      sb.write('Unexpected character ');
      sb.write(getc(_fposStart));
      final message = sb.toString();
      error = FormatException(message, _text, _fposStart);
    }
  }

  void _fail(int start, String name) {
    if (_fposStart < start) {
      _fposStart = start;
      _fposMax = _fposEnd;
      _fcount = 0;
    } else if (_fposMax < _fposEnd) {
      _fposStart = start;
      _fposMax = _fposEnd;
      _fcount = 0;
    }

    if (_fposStart == start && _fposEnd == _fposMax) {
      if (_fcount >= _failures.length) {
        _failures.length += 20;
      }

      _failures[_fcount++] = name;
    }
  }

  int _matchRanges(List<int> ranges) {
    int result;
    _success = false;
    for (var i = 0; i < ranges.length; i += 2) {
      if (ranges[i] <= _c) {
        if (ranges[i + 1] >= _c) {
          result = _c;
          _c = _input[_pos += _c <= 0xffff ? 1 : 2];
          _success = true;
          break;
        }
      } else {
        break;
      }
    }

    if (!_success && _fposEnd < _pos) {
      _fposEnd = _pos;
    }

    return result;
  }

  String _matchString(String text) {
    String result;
    final length = text.length;
    final rest = _text.length - _pos;
    final count = length > rest ? rest : length;
    var pos = _pos;
    var i = 0;
    for (; i < count; i++, pos++) {
      if (text.codeUnitAt(i) != _text.codeUnitAt(pos)) {
        break;
      }
    }

    if (i == length) {
      _c = _input[_pos += length];
      _success = true;
      result = text;
    } else {
      _success = false;
      if (_fposEnd < _pos) {
        _fposEnd = _pos;
      }
    }

    return result;
  }

  bool _memoized(int id, int cid) {
    final memos = _memos[_pos];
    if (memos != null) {
      for (var i = 0; i < memos.length; i++) {
        final memo = memos[i];
        if (memo.id == id) {
          _pos = memo.pos;
          _mresult = memo.result;
          _success = memo.success;
          _c = _input[_pos];
          return true;
        }
      }
    }

    if (_memoizable[cid] != null) {
      return false;
    }

    var lastCid = _trackCid[id];
    var lastPos = _trackPos[id];
    _trackCid[id] = cid;
    _trackPos[id] = _pos;
    if (lastCid == null) {
      return false;
    }

    if (lastPos == _pos) {
      if (lastCid != cid) {
        _memoizable[lastCid] = true;
        _memoizable[cid] = false;
      }
    }

    return false;
  }

  void _memoize(int id, int pos, result) {
    var memos = _memos[pos];
    if (memos == null) {
      memos = [];
      _memos[pos] = memos;
    }

    final memo = _Memo(
      id: id,
      pos: _pos,
      result: result,
      success: _success,
    );

    memos.add(memo);
  }

  void _reset() {
    _c = _input[0];
    _failures = [];
    _failures.length = 20;
    _fcount = 0;
    _fposEnd = -1;
    _fposMax = -1;
    _fposStart = -1;
    _memoizable = [];
    _memoizable.length = 187;
    _memos = [];
    _memos.length = _input.length + 1;
    _pos = 0;
    _predicate = false;
    _trackCid = [];
    _trackCid.length = 187;
    _trackPos = [];
    _trackPos.length = 187;
  }

  List<int> _toRunes(String source) {
    final length = source.length;
    final result = List<int>(length + 1);
    for (var pos = 0; pos < length;) {
      int c;
      final start = pos;
      final leading = source.codeUnitAt(pos++);
      if ((leading & 0xFC00) == 0xD800 && pos < length) {
        final trailing = source.codeUnitAt(pos);
        if ((trailing & 0xFC00) == 0xDC00) {
          c = 0x10000 + ((leading & 0x3FF) << 10) + (trailing & 0x3FF);
          pos++;
        } else {
          c = leading;
        }
      } else {
        c = leading;
      }

      result[start] = c;
    }

    result[length] = 0x110000;
    return result;
  }

  dynamic _parseJson(int $0, bool $1) {
    dynamic $2;
    dynamic $3;
    dynamic $4;
    var $5 = _c;
    var $6 = _pos;
    List<int> $7;
    var $8 = _pos;
    if (_c >= 9 && _c <= 10 || _c == 13 || _c == 32) {
      List<int> $9;
      _fposEnd = -1;
      var $10 = _pos;
      List<int> $11;
      List<int> $12;
      var $13 = _pos;
      if (_c >= 9 && _c <= 10 || _c == 13 || _c == 32) {
        var $14 = _parse$$spacing(64, false);
        $12 = $14;
      } else {
        _success = true;
      }
      if (_success) {
        $11 = $12;
      }
      $9 = $11;
      if (!_success) {
        _fail($10, '\'leading spaces\'');
      }
      $7 = $9;
    } else {
      _success = true;
    }
    _success = true;
    var $15 = _parseValue(4, $1);
    if (_success) {
      dynamic $16;
      var $17 = _pos;
      if (_c >= 0 && _c <= 1114112) {
        dynamic $18;
        _fposEnd = -1;
        var $19 = _pos;
        dynamic $20;
        var $21 = _c;
        var $22 = _pos;
        var $23 = _predicate;
        var $24 = $1;
        _predicate = true;
        $1 = false;
        int $25;
        _success = _c < _eof;
        if (_success) {
          $25 = _c;
          _c = _input[++_pos];
        } else {
          if (_fposEnd < _pos) {
            _fposEnd = _pos;
          }
        }
        var $26;
        _success = !_success;
        _c = $21;
        _pos = $22;
        _predicate = $23;
        $1 = $24;
        if (_success) {
          $20 = $26;
        }
        $18 = $20;
        if (!_success) {
          _fail($19, '\'end of file\'');
        }
        $16 = $18;
      } else {
        _success = false;
        _fail($17, '\'end of file\'');
      }
      if (_success) {
        $4 = $15;
      }
    }
    // NOP;
    if (!_success) {
      _c = $5;
      _pos = $6;
    }
    $3 = $4;
    $2 = $3;
    return $2;
  }

  dynamic _parseValue(int $0, bool $1) {
    dynamic $2;
    dynamic $3;
    for (;;) {
      List $4;
      List $5;
      List $6;
      var $7 = _c;
      var $8 = _pos;
      String $9;
      var $10 = _pos;
      if (_c == 91) {
        String $11;
        _fposEnd = -1;
        var $12 = _pos;
        String $13;
        var $14 = _c;
        var $15 = _pos;
        String $16;
        _success = _c == 91;
        if (_success) {
          $16 = '[';
          _c = _input[++_pos];
        } else {
          if (_fposEnd < _pos) {
            _fposEnd = _pos;
          }
        }
        if (_success) {
          List<int> $17;
          var $18 = _pos;
          if (_c >= 9 && _c <= 10 || _c == 13 || _c == 32) {
            var $19 = _parse$$spacing(118, false);
            $17 = $19;
          } else {
            _success = true;
          }
          if (_success) {
            $13 = $16;
          }
        }
        if (!_success) {
          _c = $14;
          _pos = $15;
        }
        $11 = $13;
        if (!_success) {
          _fail($12, '\'[\'');
        }
        $9 = $11;
      } else {
        _success = false;
        _fail($10, '\'[\'');
      }
      if (_success) {
        List $20;
        List $21;
        var $22 = _c;
        var $23 = _pos;
        var $24 = _parseValue(29, $1);
        if (_success) {
          List $25;
          if ($1) {
            $25 = [];
          }
          for (;;) {
            dynamic $26;
            dynamic $27;
            var $28 = _c;
            var $29 = _pos;
            String $30;
            var $31 = _pos;
            if (_c == 44) {
              var $32 = _parse_$Comma(33, false);
              $30 = $32;
            } else {
              _success = false;
              _fail($31, '\',\'');
            }
            if (_success) {
              var $33 = _parseValue(34, $1);
              if (_success) {
                $27 = $33;
              }
            }
            if (!_success) {
              _c = $28;
              _pos = $29;
            }
            $26 = $27;
            if (!_success) {
              break;
            }
            if ($1) {
              $25.add($26);
            }
          }
          _success = true;
          {
            var v = $24;
            var n = $25;
            List $$;
            $$ = [v, ...n];
            $21 = $$;
          }
          // NOP;
        }
        if (!_success) {
          _c = $22;
          _pos = $23;
        }
        $20 = $21;
        _success = true;
        String $34;
        var $35 = _pos;
        if (_c == 93) {
          String $36;
          _fposEnd = -1;
          var $37 = _pos;
          String $38;
          var $39 = _c;
          var $40 = _pos;
          String $41;
          _success = _c == 93;
          if (_success) {
            $41 = ']';
            _c = _input[++_pos];
          } else {
            if (_fposEnd < _pos) {
              _fposEnd = _pos;
            }
          }
          if (_success) {
            List<int> $42;
            var $43 = _pos;
            if (_c >= 9 && _c <= 10 || _c == 13 || _c == 32) {
              var $44 = _parse$$spacing(122, false);
              $42 = $44;
            } else {
              _success = true;
            }
            if (_success) {
              $38 = $41;
            }
          }
          if (!_success) {
            _c = $39;
            _pos = $40;
          }
          $36 = $38;
          if (!_success) {
            _fail($37, '\']\'');
          }
          $34 = $36;
        } else {
          _success = false;
          _fail($35, '\']\'');
        }
        if (_success) {
          var v = $20;
          List $$;
          $$ = v ?? [];
          $6 = $$;
        }
        // NOP;
      }
      if (!_success) {
        _c = $7;
        _pos = $8;
      }
      $5 = $6;
      if (_success) {
        $4 = $5;
        $3 = $4;
        break;
      }
      // NOP;
      dynamic $45;
      dynamic $46;
      var $47 = _pos;
      if (_c == 102) {
        dynamic $48;
        _fposEnd = -1;
        var $49 = _pos;
        dynamic $50;
        var $51 = _c;
        var $52 = _pos;
        String $53;
        if (_c == 102) {
          $53 = _matchString('false');
        } else {
          _success = false;
          if (_fposEnd < _pos) {
            _fposEnd = _pos;
          }
        }
        if (_success) {
          List<int> $54;
          var $55 = _pos;
          if (_c >= 9 && _c <= 10 || _c == 13 || _c == 32) {
            var $56 = _parse$$spacing(61, false);
            $54 = $56;
          } else {
            _success = true;
          }
          if (_success) {
            dynamic $$;
            $$ = false;
            $50 = $$;
          }
        }
        if (!_success) {
          _c = $51;
          _pos = $52;
        }
        $48 = $50;
        if (!_success) {
          _fail($49, '\'false\'');
        }
        $46 = $48;
      } else {
        _success = false;
        _fail($47, '\'false\'');
      }
      if (_success) {
        $45 = $46;
        $3 = $45;
        break;
      }
      // NOP;
      dynamic $57;
      dynamic $58;
      var $59 = _pos;
      if (_c == 110) {
        dynamic $60;
        _fposEnd = -1;
        var $61 = _pos;
        dynamic $62;
        var $63 = _c;
        var $64 = _pos;
        String $65;
        if (_c == 110) {
          $65 = _matchString('null');
        } else {
          _success = false;
          if (_fposEnd < _pos) {
            _fposEnd = _pos;
          }
        }
        if (_success) {
          List<int> $66;
          var $67 = _pos;
          if (_c >= 9 && _c <= 10 || _c == 13 || _c == 32) {
            var $68 = _parse$$spacing(68, false);
            $66 = $68;
          } else {
            _success = true;
          }
          if (_success) {
            dynamic $$;
            $$ = null;
            $62 = $$;
          }
        }
        if (!_success) {
          _c = $63;
          _pos = $64;
        }
        $60 = $62;
        if (!_success) {
          _fail($61, '\'null\'');
        }
        $58 = $60;
      } else {
        _success = false;
        _fail($59, '\'null\'');
      }
      if (_success) {
        $57 = $58;
        $3 = $57;
        break;
      }
      // NOP;
      dynamic $69;
      dynamic $70;
      var $71 = _pos;
      if (_c == 116) {
        dynamic $72;
        _fposEnd = -1;
        var $73 = _pos;
        dynamic $74;
        var $75 = _c;
        var $76 = _pos;
        String $77;
        if (_c == 116) {
          $77 = _matchString('true');
        } else {
          _success = false;
          if (_fposEnd < _pos) {
            _fposEnd = _pos;
          }
        }
        if (_success) {
          List<int> $78;
          var $79 = _pos;
          if (_c >= 9 && _c <= 10 || _c == 13 || _c == 32) {
            var $80 = _parse$$spacing(72, false);
            $78 = $80;
          } else {
            _success = true;
          }
          if (_success) {
            dynamic $$;
            $$ = true;
            $74 = $$;
          }
        }
        if (!_success) {
          _c = $75;
          _pos = $76;
        }
        $72 = $74;
        if (!_success) {
          _fail($73, '\'true\'');
        }
        $70 = $72;
      } else {
        _success = false;
        _fail($71, '\'true\'');
      }
      if (_success) {
        $69 = $70;
        $3 = $69;
        break;
      }
      // NOP;
      Map<String, dynamic> $81;
      Map<String, dynamic> $82;
      Map<String, dynamic> $83;
      var $84 = _c;
      var $85 = _pos;
      String $86;
      var $87 = _pos;
      if (_c == 123) {
        String $88;
        _fposEnd = -1;
        var $89 = _pos;
        String $90;
        var $91 = _c;
        var $92 = _pos;
        String $93;
        _success = _c == 123;
        if (_success) {
          $93 = '{';
          _c = _input[++_pos];
        } else {
          if (_fposEnd < _pos) {
            _fposEnd = _pos;
          }
        }
        if (_success) {
          List<int> $94;
          var $95 = _pos;
          if (_c >= 9 && _c <= 10 || _c == 13 || _c == 32) {
            var $96 = _parse$$spacing(110, false);
            $94 = $96;
          } else {
            _success = true;
          }
          if (_success) {
            $90 = $93;
          }
        }
        if (!_success) {
          _c = $91;
          _pos = $92;
        }
        $88 = $90;
        if (!_success) {
          _fail($89, '\'{\'');
        }
        $86 = $88;
      } else {
        _success = false;
        _fail($87, '\'{\'');
      }
      if (_success) {
        List<MapEntry<String, dynamic>> $97;
        List<MapEntry<String, dynamic>> $98;
        var $99 = _c;
        var $100 = _pos;
        var $101 = _parseMember(43, $1);
        if (_success) {
          List<MapEntry<String, dynamic>> $102;
          if ($1) {
            $102 = [];
          }
          for (;;) {
            MapEntry<String, dynamic> $103;
            MapEntry<String, dynamic> $104;
            var $105 = _c;
            var $106 = _pos;
            String $107;
            var $108 = _pos;
            if (_c == 44) {
              var $109 = _parse_$Comma(47, false);
              $107 = $109;
            } else {
              _success = false;
              _fail($108, '\',\'');
            }
            if (_success) {
              var $110 = _parseMember(48, $1);
              if (_success) {
                $104 = $110;
              }
            }
            if (!_success) {
              _c = $105;
              _pos = $106;
            }
            $103 = $104;
            if (!_success) {
              break;
            }
            if ($1) {
              $102.add($103);
            }
          }
          _success = true;
          {
            var m = $101;
            var n = $102;
            List<MapEntry<String, dynamic>> $$;
            $$ = [m, ...n];
            $98 = $$;
          }
          // NOP;
        }
        if (!_success) {
          _c = $99;
          _pos = $100;
        }
        $97 = $98;
        _success = true;
        String $111;
        var $112 = _pos;
        if (_c == 125) {
          String $113;
          _fposEnd = -1;
          var $114 = _pos;
          String $115;
          var $116 = _c;
          var $117 = _pos;
          String $118;
          _success = _c == 125;
          if (_success) {
            $118 = '}';
            _c = _input[++_pos];
          } else {
            if (_fposEnd < _pos) {
              _fposEnd = _pos;
            }
          }
          if (_success) {
            List<int> $119;
            var $120 = _pos;
            if (_c >= 9 && _c <= 10 || _c == 13 || _c == 32) {
              var $121 = _parse$$spacing(114, false);
              $119 = $121;
            } else {
              _success = true;
            }
            if (_success) {
              $115 = $118;
            }
          }
          if (!_success) {
            _c = $116;
            _pos = $117;
          }
          $113 = $115;
          if (!_success) {
            _fail($114, '\'}\'');
          }
          $111 = $113;
        } else {
          _success = false;
          _fail($112, '\'}\'');
        }
        if (_success) {
          var m = $97;
          Map<String, dynamic> $$;
          $$ = <String, dynamic>{}..addEntries(m ?? []);
          $83 = $$;
        }
        // NOP;
      }
      if (!_success) {
        _c = $84;
        _pos = $85;
      }
      $82 = $83;
      if (_success) {
        $81 = $82;
        $3 = $81;
        break;
      }
      // NOP;
      num $122;
      num $123;
      var $124 = _pos;
      if (_c == 45 || _c >= 48 && _c <= 57) {
        num $125;
        _fposEnd = -1;
        var $126 = _pos;
        num $127;
        var $128 = _c;
        var $129 = _pos;
        String $130;
        var $131 = _pos;
        var $132 = $1;
        $1 = false;
        int $133;
        int $134;
        var $135 = _c;
        var $136 = _pos;
        int $137;
        if (_c == 45) {
          _success = true;
          $137 = _c;
          _c = _input[_pos += _c <= 65535 ? 1 : 2];
        } else {
          _success = false;
          if (_fposEnd < _pos) {
            _fposEnd = _pos;
          }
        }
        _success = true;
        int $138;
        for (;;) {
          int $139;
          int $140;
          if (_c == 48) {
            _success = true;
            $140 = _c;
            _c = _input[_pos += _c <= 65535 ? 1 : 2];
          } else {
            _success = false;
            if (_fposEnd < _pos) {
              _fposEnd = _pos;
            }
          }
          if (_success) {
            $139 = $140;
            $138 = $139;
            break;
          }
          // NOP;
          int $141;
          var $142 = _c;
          var $143 = _pos;
          int $144;
          if (_c >= 49 && _c <= 57) {
            _success = true;
            $144 = _c;
            _c = _input[_pos += _c <= 65535 ? 1 : 2];
          } else {
            _success = false;
            if (_fposEnd < _pos) {
              _fposEnd = _pos;
            }
          }
          if (_success) {
            List<int> $145;
            for (;;) {
              int $146;
              if (_c >= 48 && _c <= 57) {
                _success = true;
                $146 = _c;
                _c = _input[_pos += _c <= 65535 ? 1 : 2];
              } else {
                _success = false;
                if (_fposEnd < _pos) {
                  _fposEnd = _pos;
                }
              }
              if (!_success) {
                break;
              }
            }
            _success = true;
            $141 = $144;
            // NOP;
          }
          if (!_success) {
            _c = $142;
            _pos = $143;
          } else {
            $138 = $141;
          }
          // NOP;
          break;
        }
        if (_success) {
          int $147;
          int $148;
          var $149 = _c;
          var $150 = _pos;
          int $151;
          if (_c == 46) {
            _success = true;
            $151 = _c;
            _c = _input[_pos += _c <= 65535 ? 1 : 2];
          } else {
            _success = false;
            if (_fposEnd < _pos) {
              _fposEnd = _pos;
            }
          }
          if (_success) {
            List<int> $152;
            var $153 = false;
            for (;;) {
              int $154;
              if (_c >= 48 && _c <= 57) {
                _success = true;
                $154 = _c;
                _c = _input[_pos += _c <= 65535 ? 1 : 2];
              } else {
                _success = false;
                if (_fposEnd < _pos) {
                  _fposEnd = _pos;
                }
              }
              if (!_success) {
                _success = $153;
                if (!_success) {
                  $152 = null;
                }
                break;
              }
              $153 = true;
            }
            if (_success) {
              $148 = $151;
            }
          }
          if (!_success) {
            _c = $149;
            _pos = $150;
          }
          $147 = $148;
          _success = true;
          int $155;
          int $156;
          var $157 = _c;
          var $158 = _pos;
          int $159;
          if (_c == 69 || _c == 101) {
            _success = true;
            $159 = _c;
            _c = _input[_pos += _c <= 65535 ? 1 : 2];
          } else {
            _success = false;
            if (_fposEnd < _pos) {
              _fposEnd = _pos;
            }
          }
          if (_success) {
            List<int> $160;
            var $161 = false;
            for (;;) {
              int $162;
              if (_c == 32 || _c >= 43 && _c <= 93) {
                _success = true;
                $162 = _c;
                _c = _input[_pos += _c <= 65535 ? 1 : 2];
              } else {
                _success = false;
                if (_fposEnd < _pos) {
                  _fposEnd = _pos;
                }
              }
              if (!_success) {
                _success = $161;
                if (!_success) {
                  $160 = null;
                }
                break;
              }
              $161 = true;
            }
            if (_success) {
              $156 = $159;
            }
          }
          if (!_success) {
            _c = $157;
            _pos = $158;
          }
          $155 = $156;
          _success = true;
          $134 = $137;
          // NOP;
          // NOP;
        }
        // NOP;
        if (!_success) {
          _c = $135;
          _pos = $136;
        }
        $133 = $134;
        if (_success) {
          $130 = _text.substring($131, _pos);
        }
        $1 = $132;
        if (_success) {
          List<int> $163;
          var $164 = _pos;
          if (_c >= 9 && _c <= 10 || _c == 13 || _c == 32) {
            var $165 = _parse$$spacing(106, false);
            $163 = $165;
          } else {
            _success = true;
          }
          if (_success) {
            var n = $130;
            num $$;
            $$ = num.parse(n);
            $127 = $$;
          }
        }
        if (!_success) {
          _c = $128;
          _pos = $129;
        }
        $125 = $127;
        if (!_success) {
          _fail($126, '\'number\'');
        }
        $123 = $125;
      } else {
        _success = false;
        _fail($124, '\'number\'');
      }
      if (_success) {
        $122 = $123;
        $3 = $122;
        break;
      }
      // NOP;
      String $166;
      String $167;
      var $168 = _pos;
      if (_c == 34) {
        var $169 = _parse_string(20, $1);
        $167 = $169;
      } else {
        _success = false;
        _fail($168, '\'string\'');
      }
      if (_success) {
        $166 = $167;
        $3 = $166;
      }
      // NOP;
      break;
    }
    $2 = $3;
    return $2;
  }

  MapEntry<String, dynamic> _parseMember(int $0, bool $1) {
    MapEntry<String, dynamic> $2;
    MapEntry<String, dynamic> $3;
    MapEntry<String, dynamic> $4;
    var $5 = _c;
    var $6 = _pos;
    String $7;
    var $8 = _pos;
    if (_c == 34) {
      var $9 = _parse_string(51, $1);
      $7 = $9;
    } else {
      _success = false;
      _fail($8, '\'string\'');
    }
    if (_success) {
      String $10;
      var $11 = _pos;
      if (_c == 58) {
        String $12;
        _fposEnd = -1;
        var $13 = _pos;
        String $14;
        var $15 = _c;
        var $16 = _pos;
        String $17;
        _success = _c == 58;
        if (_success) {
          $17 = ':';
          _c = _input[++_pos];
        } else {
          if (_fposEnd < _pos) {
            _fposEnd = _pos;
          }
        }
        if (_success) {
          List<int> $18;
          var $19 = _pos;
          if (_c >= 9 && _c <= 10 || _c == 13 || _c == 32) {
            var $20 = _parse$$spacing(130, false);
            $18 = $20;
          } else {
            _success = true;
          }
          if (_success) {
            $14 = $17;
          }
        }
        if (!_success) {
          _c = $15;
          _pos = $16;
        }
        $12 = $14;
        if (!_success) {
          _fail($13, '\':\'');
        }
        $10 = $12;
      } else {
        _success = false;
        _fail($11, '\':\'');
      }
      if (_success) {
        var $21 = _parseValue(53, $1);
        if (_success) {
          var k = $7;
          var v = $21;
          MapEntry<String, dynamic> $$;
          $$ = MapEntry(k, v);
          $4 = $$;
        }
      }
    }
    if (!_success) {
      _c = $5;
      _pos = $6;
    }
    $3 = $4;
    $2 = $3;
    return $2;
  }

  String _parse_string(int $0, bool $1) {
    String $2;
    String $3;
    _fposEnd = -1;
    var $4 = _pos;
    String $5;
    var $6 = _c;
    var $7 = _pos;
    String $8;
    _success = _c == 34;
    if (_success) {
      $8 = '\"';
      _c = _input[++_pos];
    } else {
      if (_fposEnd < _pos) {
        _fposEnd = _pos;
      }
    }
    if (_success) {
      List<int> $9;
      if ($1) {
        $9 = [];
      }
      for (;;) {
        int $10;
        var $11 = _pos;
        if (_c >= 32 && _c <= 33 || _c >= 35 && _c <= 1114111) {
          int $12;
          for (;;) {
            int $13;
            var $14 = _c;
            var $15 = _pos;
            int $16;
            if (_c == 92) {
              _success = true;
              $16 = _c;
              _c = _input[_pos += _c <= 65535 ? 1 : 2];
            } else {
              _success = false;
              if (_fposEnd < _pos) {
                _fposEnd = _pos;
              }
            }
            if (_success) {
              int $17;
              var $18 = _pos;
              if (_c == 34 ||
                  _c == 47 ||
                  _c == 92 ||
                  _c == 98 ||
                  _c == 102 ||
                  _c == 110 ||
                  _c == 114 ||
                  _c >= 116 && _c <= 117) {
                int $19;
                for (;;) {
                  int $20;
                  int $21;
                  if (_c == 34) {
                    _success = true;
                    $21 = _c;
                    _c = _input[_pos += _c <= 65535 ? 1 : 2];
                  } else {
                    _success = false;
                    if (_fposEnd < _pos) {
                      _fposEnd = _pos;
                    }
                  }
                  if (_success) {
                    $20 = $21;
                    $19 = $20;
                    break;
                  }
                  // NOP;
                  int $22;
                  int $23;
                  if (_c == 92) {
                    _success = true;
                    $23 = _c;
                    _c = _input[_pos += _c <= 65535 ? 1 : 2];
                  } else {
                    _success = false;
                    if (_fposEnd < _pos) {
                      _fposEnd = _pos;
                    }
                  }
                  if (_success) {
                    $22 = $23;
                    $19 = $22;
                    break;
                  }
                  // NOP;
                  int $24;
                  int $25;
                  if (_c == 47) {
                    _success = true;
                    $25 = _c;
                    _c = _input[_pos += _c <= 65535 ? 1 : 2];
                  } else {
                    _success = false;
                    if (_fposEnd < _pos) {
                      _fposEnd = _pos;
                    }
                  }
                  if (_success) {
                    $24 = $25;
                    $19 = $24;
                    break;
                  }
                  // NOP;
                  int $26;
                  int $27;
                  if (_c == 98) {
                    _success = true;
                    $27 = _c;
                    _c = _input[_pos += _c <= 65535 ? 1 : 2];
                  } else {
                    _success = false;
                    if (_fposEnd < _pos) {
                      _fposEnd = _pos;
                    }
                  }
                  if (_success) {
                    int $$;
                    $$ = 0x8;
                    $26 = $$;
                  }
                  if (_success) {
                    $19 = $26;
                    break;
                  }
                  int $28;
                  int $29;
                  if (_c == 102) {
                    _success = true;
                    $29 = _c;
                    _c = _input[_pos += _c <= 65535 ? 1 : 2];
                  } else {
                    _success = false;
                    if (_fposEnd < _pos) {
                      _fposEnd = _pos;
                    }
                  }
                  if (_success) {
                    int $$;
                    $$ = 0xC;
                    $28 = $$;
                  }
                  if (_success) {
                    $19 = $28;
                    break;
                  }
                  int $30;
                  int $31;
                  if (_c == 110) {
                    _success = true;
                    $31 = _c;
                    _c = _input[_pos += _c <= 65535 ? 1 : 2];
                  } else {
                    _success = false;
                    if (_fposEnd < _pos) {
                      _fposEnd = _pos;
                    }
                  }
                  if (_success) {
                    int $$;
                    $$ = 0xA;
                    $30 = $$;
                  }
                  if (_success) {
                    $19 = $30;
                    break;
                  }
                  int $32;
                  int $33;
                  if (_c == 114) {
                    _success = true;
                    $33 = _c;
                    _c = _input[_pos += _c <= 65535 ? 1 : 2];
                  } else {
                    _success = false;
                    if (_fposEnd < _pos) {
                      _fposEnd = _pos;
                    }
                  }
                  if (_success) {
                    int $$;
                    $$ = 0xD;
                    $32 = $$;
                  }
                  if (_success) {
                    $19 = $32;
                    break;
                  }
                  int $34;
                  int $35;
                  if (_c == 116) {
                    _success = true;
                    $35 = _c;
                    _c = _input[_pos += _c <= 65535 ? 1 : 2];
                  } else {
                    _success = false;
                    if (_fposEnd < _pos) {
                      _fposEnd = _pos;
                    }
                  }
                  if (_success) {
                    int $$;
                    $$ = 0x9;
                    $34 = $$;
                  }
                  if (_success) {
                    $19 = $34;
                    break;
                  }
                  int $36;
                  var $37 = _c;
                  var $38 = _pos;
                  int $39;
                  if (_c == 117) {
                    _success = true;
                    $39 = _c;
                    _c = _input[_pos += _c <= 65535 ? 1 : 2];
                  } else {
                    _success = false;
                    if (_fposEnd < _pos) {
                      _fposEnd = _pos;
                    }
                  }
                  if (_success) {
                    int $40;
                    var $41 = _pos;
                    if (_c >= 48 && _c <= 57 ||
                        _c >= 65 && _c <= 70 ||
                        _c >= 97 && _c <= 102) {
                      int $42;
                      int $43;
                      var $44 = _c;
                      var $45 = _pos;
                      int $46;
                      var $47 = _pos;
                      if (_c >= 48 && _c <= 57 ||
                          _c >= 65 && _c <= 70 ||
                          _c >= 97 && _c <= 102) {
                        var $48 = _parse$$hexdig(165, $1);
                        $46 = $48;
                      } else {
                        _success = false;
                      }
                      if (_success) {
                        int $49;
                        var $50 = _pos;
                        if (_c >= 48 && _c <= 57 ||
                            _c >= 65 && _c <= 70 ||
                            _c >= 97 && _c <= 102) {
                          var $51 = _parse$$hexdig(166, $1);
                          $49 = $51;
                        } else {
                          _success = false;
                        }
                        if (_success) {
                          int $52;
                          var $53 = _pos;
                          if (_c >= 48 && _c <= 57 ||
                              _c >= 65 && _c <= 70 ||
                              _c >= 97 && _c <= 102) {
                            var $54 = _parse$$hexdig(167, $1);
                            $52 = $54;
                          } else {
                            _success = false;
                          }
                          if (_success) {
                            int $55;
                            var $56 = _pos;
                            if (_c >= 48 && _c <= 57 ||
                                _c >= 65 && _c <= 70 ||
                                _c >= 97 && _c <= 102) {
                              var $57 = _parse$$hexdig(168, $1);
                              $55 = $57;
                            } else {
                              _success = false;
                            }
                            if (_success) {
                              var a = $46;
                              var b = $49;
                              var c = $52;
                              var d = $55;
                              int $$;
                              $$ = a * 0xfff + b * 0xff + c * 0xf + d;
                              $43 = $$;
                            }
                          }
                        }
                      }
                      if (!_success) {
                        _c = $44;
                        _pos = $45;
                      }
                      $42 = $43;
                      $40 = $42;
                    } else {
                      _success = false;
                    }
                    if (_success) {
                      $36 = $40;
                    }
                  }
                  if (!_success) {
                    _c = $37;
                    _pos = $38;
                  } else {
                    $19 = $36;
                  }
                  // NOP;
                  break;
                }
                $17 = $19;
              } else {
                _success = false;
              }
              if (_success) {
                $13 = $17;
              }
            }
            if (!_success) {
              _c = $14;
              _pos = $15;
            } else {
              $12 = $13;
              break;
            }
            // NOP;
            int $58;
            int $59;
            var $60 = _pos;
            if (_c >= 32 && _c <= 33 ||
                _c >= 35 && _c <= 91 ||
                _c >= 93 && _c <= 1114111) {
              int $61;
              for (;;) {
                int $62;
                int $63;
                if (_c >= 32 && _c <= 33) {
                  _success = true;
                  $63 = _c;
                  _c = _input[_pos += _c <= 65535 ? 1 : 2];
                } else {
                  _success = false;
                  if (_fposEnd < _pos) {
                    _fposEnd = _pos;
                  }
                }
                if (_success) {
                  $62 = $63;
                  $61 = $62;
                  break;
                }
                // NOP;
                int $64;
                int $65;
                if (_c >= 35 && _c <= 91) {
                  _success = true;
                  $65 = _c;
                  _c = _input[_pos += _c <= 65535 ? 1 : 2];
                } else {
                  _success = false;
                  if (_fposEnd < _pos) {
                    _fposEnd = _pos;
                  }
                }
                if (_success) {
                  $64 = $65;
                  $61 = $64;
                  break;
                }
                // NOP;
                int $66;
                int $67;
                if (_c >= 93 && _c <= 1114111) {
                  _success = true;
                  $67 = _c;
                  _c = _input[_pos += _c <= 65535 ? 1 : 2];
                } else {
                  _success = false;
                  if (_fposEnd < _pos) {
                    _fposEnd = _pos;
                  }
                }
                if (_success) {
                  $66 = $67;
                  $61 = $66;
                }
                // NOP;
                break;
              }
              $59 = $61;
            } else {
              _success = false;
            }
            if (_success) {
              $58 = $59;
              $12 = $58;
            }
            // NOP;
            break;
          }
          $10 = $12;
        } else {
          _success = false;
        }
        if (!_success) {
          break;
        }
        if ($1) {
          $9.add($10);
        }
      }
      _success = true;
      String $68;
      _success = _c == 34;
      if (_success) {
        $68 = '\"';
        _c = _input[++_pos];
      } else {
        if (_fposEnd < _pos) {
          _fposEnd = _pos;
        }
      }
      if (_success) {
        List<int> $69;
        var $70 = _pos;
        if (_c >= 9 && _c <= 10 || _c == 13 || _c == 32) {
          var $71 = _parse$$spacing(79, false);
          $69 = $71;
        } else {
          _success = true;
        }
        if (_success) {
          var c = $9;
          String $$;
          $$ = String.fromCharCodes(c);
          $5 = $$;
        }
      }
      // NOP;
    }
    if (!_success) {
      _c = $6;
      _pos = $7;
    }
    $3 = $5;
    if (!_success) {
      _fail($4, '\'string\'');
    }
    $2 = $3;
    return $2;
  }

  String _parse_$Comma(int $0, bool $1) {
    String $2;
    String $3;
    _fposEnd = -1;
    var $4 = _pos;
    String $5;
    var $6 = _c;
    var $7 = _pos;
    String $8;
    _success = _c == 44;
    if (_success) {
      $8 = ',';
      _c = _input[++_pos];
    } else {
      if (_fposEnd < _pos) {
        _fposEnd = _pos;
      }
    }
    if (_success) {
      List<int> $9;
      var $10 = _pos;
      if (_c >= 9 && _c <= 10 || _c == 13 || _c == 32) {
        var $11 = _parse$$spacing(126, false);
        $9 = $11;
      } else {
        _success = true;
      }
      if (_success) {
        $5 = $8;
      }
    }
    if (!_success) {
      _c = $6;
      _pos = $7;
    }
    $3 = $5;
    if (!_success) {
      _fail($4, '\',\'');
    }
    $2 = $3;
    return $2;
  }

  int _parse$$digit(int $0, bool $1) {
    int $2;
    int $3;
    int $4;
    int $5;
    if (_c >= 48 && _c <= 57) {
      _success = true;
      $5 = _c;
      _c = _input[_pos += _c <= 65535 ? 1 : 2];
    } else {
      _success = false;
      if (_fposEnd < _pos) {
        _fposEnd = _pos;
      }
    }
    if (_success) {
      int $$;
      $$ = $$ - 48;
      $4 = $$;
    }
    $3 = $4;
    $2 = $3;
    return $2;
  }

  int _parse$$digit1_9(int $0, bool $1) {
    int $2;
    int $3;
    int $4;
    int $5;
    if (_c >= 49 && _c <= 57) {
      _success = true;
      $5 = _c;
      _c = _input[_pos += _c <= 65535 ? 1 : 2];
    } else {
      _success = false;
      if (_fposEnd < _pos) {
        _fposEnd = _pos;
      }
    }
    if (_success) {
      int $$;
      $$ = $$ - 48;
      $4 = $$;
    }
    $3 = $4;
    $2 = $3;
    return $2;
  }

  int _parse$$hexdig(int $0, bool $1) {
    int $2;
    int $3;
    for (;;) {
      int $4;
      int $5;
      if (_c >= 97 && _c <= 102) {
        _success = true;
        $5 = _c;
        _c = _input[_pos += _c <= 65535 ? 1 : 2];
      } else {
        _success = false;
        if (_fposEnd < _pos) {
          _fposEnd = _pos;
        }
      }
      if (_success) {
        int $$;
        $$ = $$ - 97;
        $4 = $$;
      }
      if (_success) {
        $3 = $4;
        break;
      }
      int $6;
      int $7;
      if (_c >= 65 && _c <= 70) {
        _success = true;
        $7 = _c;
        _c = _input[_pos += _c <= 65535 ? 1 : 2];
      } else {
        _success = false;
        if (_fposEnd < _pos) {
          _fposEnd = _pos;
        }
      }
      if (_success) {
        int $$;
        $$ = $$ - 65;
        $6 = $$;
      }
      if (_success) {
        $3 = $6;
        break;
      }
      int $8;
      int $9;
      if (_c >= 48 && _c <= 57) {
        _success = true;
        $9 = _c;
        _c = _input[_pos += _c <= 65535 ? 1 : 2];
      } else {
        _success = false;
        if (_fposEnd < _pos) {
          _fposEnd = _pos;
        }
      }
      if (_success) {
        int $$;
        $$ = $$ - 48;
        $8 = $$;
      }
      if (_success) {
        $3 = $8;
      }
      break;
    }
    $2 = $3;
    return $2;
  }

  List<int> _parse$$spacing(int $0, bool $1) {
    List<int> $2;
    List<int> $3;
    List<int> $4;
    List<int> $5;
    for (;;) {
      int $6;
      if (_c >= 9 && _c <= 10 || _c == 13 || _c == 32) {
        _success = true;
        $6 = _c;
        _c = _input[_pos += _c <= 65535 ? 1 : 2];
      } else {
        _success = false;
        if (_fposEnd < _pos) {
          _fposEnd = _pos;
        }
      }
      if (!_success) {
        break;
      }
    }
    _success = true;
    $4 = $5;
    // NOP;
    $3 = $4;
    $2 = $3;
    return $2;
  }
}

class _Memo {
  final int id;

  final int pos;

  final result;

  final bool success;

  _Memo({
    this.id,
    this.pos,
    this.result,
    this.success,
  });
}
// ignore_for_file: prefer_final_locals
// ignore_for_file: unused_element
// ignore_for_file: unused_field
// ignore_for_file: unused_local_variable
1
likes
0
pub points
0%
popularity

Publisher

unverified uploader

PEG+ (Parsing expression grammar) parser source code generator, command line tool.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

args, dart_style, lists, path, strings

More

Packages that depend on peg2