Sha256: 120dc53ea2c0d0ced8cc0315f03a3101a2329709b8e61ff6352825fad26c5624

Contents?: true

Size: 765 Bytes

Versions: 2

Compression:

Stored size: 765 Bytes

Contents

module Hesabu
  class Interpreter < Parslet::Transform
    rule(left:  simple(:left),
         right: simple(:right),
         op:    simple(:op)) do
      Hesabu::Types::Operation.new(left, op, right)
    end
    rule(plist: sequence(:arr)) { arr }
    rule(plist: "()") { [] }
    rule(fcall: { name: simple(:name), varlist: sequence(:vars) }) do
      Hesabu::Types::FunCall.new(name, vars)
    end
    rule(identifier: simple(:id)) { id.to_s }
    rule(variable: simple(:variable)) do |d|
      d[:var_identifiers]&.add(d[:variable])
      Hesabu::Types::IdentifierLit.new(d[:variable], d[:doc])
    end

    rule(integer: simple(:integer)) { Hesabu::Types::IntLit.new(integer) }
    rule(float: simple(:float)) { Hesabu::Types::FloatLit.new(float) }
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hesabu-0.1.2 lib/hesabu/interpreter.rb
hesabu-0.1.1 lib/hesabu/interpreter.rb