Sha256: c838a3bdd5094ca1d69d248ab8de462d52d8fc682f1317b0b1859810184e57b0

Contents?: true

Size: 798 Bytes

Versions: 19

Compression:

Stored size: 798 Bytes

Contents

require 'finitio/syntax/lexer'

grammar Finitio::Syntax::Literals
  include Finitio::Syntax::Lexer

  rule literal
      seq_literal
    | scalar_literal
  end

  rule seq_literal
    ('{' spacing literal? (comma literal)* spacing '}') {
      captures[:literal].map(&:value)
    }
  end

  rule scalar_literal
      boolean_literal
    | real_literal
    | integer_literal
    | string_literal
  end

  rule boolean_literal
    ("true" | "false")
    <Finitio::Syntax::Literal::Boolean>
  end

  rule integer_literal
    ([0] | [1-9] [0-9]*)
    <Finitio::Syntax::Literal::Integer>
  end

  rule real_literal
    (integer_literal? '.' [0-9]*)
    <Finitio::Syntax::Literal::Real>
  end

  rule string_literal
    (["] str:([\\]["] | !["] .)* ["])
    <Finitio::Syntax::Literal::String>
  end

end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
finitio-0.12.0 lib/finitio/syntax/literals.citrus
finitio-0.11.4 lib/finitio/syntax/literals.citrus
finitio-0.11.3 lib/finitio/syntax/literals.citrus
finitio-0.11.2 lib/finitio/syntax/literals.citrus
finitio-0.11.1 lib/finitio/syntax/literals.citrus
finitio-0.10.0 lib/finitio/syntax/literals.citrus
finitio-0.9.1 lib/finitio/syntax/literals.citrus
finitio-0.9.0 lib/finitio/syntax/literals.citrus
finitio-0.8.0 lib/finitio/syntax/literals.citrus
finitio-0.7.0 lib/finitio/syntax/literals.citrus
finitio-0.7.0.pre.rc4 lib/finitio/syntax/literals.citrus
finitio-0.7.0.pre.rc3 lib/finitio/syntax/literals.citrus
finitio-0.7.0.pre.rc2 lib/finitio/syntax/literals.citrus
finitio-0.7.0.pre.rc1 lib/finitio/syntax/literals.citrus
finitio-0.6.1 lib/finitio/syntax/literals.citrus
finitio-0.6.0 lib/finitio/syntax/literals.citrus
finitio-0.5.2 lib/finitio/syntax/literals.citrus
finitio-0.5.1 lib/finitio/syntax/literals.citrus
finitio-0.5.0 lib/finitio/syntax/literals.citrus