Sha256: 8ea93d56b9a365f62c72ac1a24d664efcd6421e040557c5d950720d98a3cfe7c

Contents?: true

Size: 593 Bytes

Versions: 3

Compression:

Stored size: 593 Bytes

Contents

# frozen_string_literal: true

module Basic101

  class Parser < Parslet::Parser

    rule(:float) do
      (fixed >> exponent.maybe |
       sign.maybe >> decimal >> exponent).as(:float)
    end

    rule(:integer) do
      (sign.maybe >> decimal).as(:integer)
    end

    rule(:decimal) do
      match('[0-9]').repeat(1)
    end

    rule(:sign)  do
      match('[+-]')
    end

    rule(:fixed) do
      sign.maybe >>
        (decimal >> str('.') >> decimal.maybe) |
        (str('.') >> decimal)
    end

    rule(:exponent) do
      str('E') >> sign.maybe >> decimal
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
basic101-1.0.2 lib/basic101/parser/numeric.rb
basic101-1.0.1 lib/basic101/parser/numeric.rb
basic101-1.0.0 lib/basic101/parser/numeric.rb