Sha256: 33c27d947c0cea91bdd3a28698499d57921bbb5c30c9abc09195bf904a3db205

Contents?: true

Size: 1.94 KB

Versions: 2

Compression:

Stored size: 1.94 KB

Contents

module Pione
  module Transformer
    module LiteralTransformer
      include TransformerModule

      # boolean
      rule(:boolean => simple(:s)) do
        line_and_column = s.line_and_column
        val = (s == "true")
        Model::PioneBoolean.new(val) do
          set_line_and_column(line_and_column)
        end
      end

      # string
      rule(:string => simple(:s)) do
        line_and_column = s.line_and_column
        Model::PioneString.new(s.str.gsub(/\\(.)/){$1}) do
          set_line_and_column(line_and_column)
        end
      end

      # integer
      rule(:integer => simple(:i)) do
        line_and_column = i.line_and_column
        Model::PioneInteger.new(i.to_i) do
          set_line_and_column(line_and_column)
        end
      end

      # float
      rule(:float => simple(:f)) do
        line_and_column = f.line_and_column
        Model::PioneFloat.new(f.to_f) do
          set_line_and_column(line_and_column)
        end
      end

      # variable
      rule(:variable => simple(:v)) do
        line_and_column = v.line_and_column
        Model::Variable.new(v) do
          set_line_and_column(line_and_column)
        end
      end

      # data_name
      # escape characters are substituted
      rule(:data_name => simple(:name)) do
        line_and_column = name.line_and_column
        Model::DataExpr.new(name.str.gsub(/\\(.)/) {$1}) do
          set_line_and_column(line_and_column)
        end
      end

      # package_name
      rule(:package_name => simple(:name)) do
        line_and_column = name.line_and_column
        Model::Package.new(name) do
          set_line_and_column(line_and_column)
        end
      end

      # rule_name
      rule(:rule_name => simple(:name)) do
        line_and_column = name.line_and_column
        RuleExpr.new(
          Package.new(Thread.current[:current_package_name]),
          name
        ) do
          set_line_and_column(line_and_column)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pione-0.1.1 lib/pione/transformer/literal-transformer.rb
pione-0.1.0 lib/pione/transformer/literal-transformer.rb