Sha256: 40ce33faa20cfb06773df87cd0217c650f9753dd21d46c520dfa33a577b200fd
Contents?: true
Size: 875 Bytes
Versions: 3
Compression:
Stored size: 875 Bytes
Contents
module Hesabu class Interpreter < Parslet::Transform rule(plist: sequence(:arr)) { arr } rule(plist: "()") { [] } rule(l: simple(:left), r: simple(:right), o: simple(:op)) do Hesabu::Types::Operation.new(left, op, right) 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(fcall: { name: simple(:name), varlist: sequence(:vars) }) do Hesabu::Types::FunCall.new(name, vars) end rule(str: subtree(:str)) do Hesabu::Types::StringLit.new(str.map { |char| char.values.first.str }.join) end rule(integer: simple(:integer)) { Hesabu::Types::IntLit.new(integer) } rule(float: simple(:float)) { Hesabu::Types::FloatLit.new(float) } end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
hesabu-0.1.5 | lib/hesabu/interpreter.rb |
hesabu-0.1.4 | lib/hesabu/interpreter.rb |
hesabu-0.1.3 | lib/hesabu/interpreter.rb |