_DecimalLiteral

in doc-src/parsejs/lib/parsejs/grammar.kpeg.rb [8011:8173]


  def _DecimalLiteral

    _save = self.pos
    while true # choice

      _save1 = self.pos
      while true # sequence
        _text_start = self.pos

        _save2 = self.pos
        while true # sequence
          _tmp = apply(:_DecimalIntegerLiteral)
          unless _tmp
            self.pos = _save2
            break
          end
          _tmp = match_string(".")
          unless _tmp
            self.pos = _save2
            break
          end
          while true
            _tmp = apply(:_DecimalDigit)
            break unless _tmp
          end
          _tmp = true
          unless _tmp
            self.pos = _save2
            break
          end
          _save4 = self.pos
          _tmp = apply(:_ExponentPart)
          unless _tmp
            _tmp = true
            self.pos = _save4
          end
          unless _tmp
            self.pos = _save2
          end
          break
        end # end sequence

        if _tmp
          text = get_text(_text_start)
        end
        unless _tmp
          self.pos = _save1
          break
        end
        @result = begin; number(text); end
        _tmp = true
        unless _tmp
          self.pos = _save1
        end
        break
      end # end sequence

      break if _tmp
      self.pos = _save

      _save5 = self.pos
      while true # sequence
        _text_start = self.pos

        _save6 = self.pos
        while true # sequence
          _tmp = match_string(".")
          unless _tmp
            self.pos = _save6
            break
          end
          _save7 = self.pos
          _tmp = apply(:_DecimalDigit)
          if _tmp
            while true
              _tmp = apply(:_DecimalDigit)
              break unless _tmp
            end
            _tmp = true
          else
            self.pos = _save7
          end
          unless _tmp
            self.pos = _save6
            break
          end
          _save8 = self.pos
          _tmp = apply(:_ExponentPart)
          unless _tmp
            _tmp = true
            self.pos = _save8
          end
          unless _tmp
            self.pos = _save6
          end
          break
        end # end sequence

        if _tmp
          text = get_text(_text_start)
        end
        unless _tmp
          self.pos = _save5
          break
        end
        @result = begin; number(text); end
        _tmp = true
        unless _tmp
          self.pos = _save5
        end
        break
      end # end sequence

      break if _tmp
      self.pos = _save

      _save9 = self.pos
      while true # sequence
        _text_start = self.pos

        _save10 = self.pos
        while true # sequence
          _tmp = apply(:_DecimalIntegerLiteral)
          unless _tmp
            self.pos = _save10
            break
          end
          _save11 = self.pos
          _tmp = apply(:_ExponentPart)
          unless _tmp
            _tmp = true
            self.pos = _save11
          end
          unless _tmp
            self.pos = _save10
          end
          break
        end # end sequence

        if _tmp
          text = get_text(_text_start)
        end
        unless _tmp
          self.pos = _save9
          break
        end
        @result = begin; number(text); end
        _tmp = true
        unless _tmp
          self.pos = _save9
        end
        break
      end # end sequence

      break if _tmp
      self.pos = _save
      break
    end # end choice

    set_failed_rule :_DecimalLiteral unless _tmp
    return _tmp
  end