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 |