mapleseed 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,13 +26,25 @@ You can also start an interactive interpreter by running Mapleseed without any p
26
26
  The list of options is viewable from the command line using the -h parameter.
27
27
 
28
28
  % mapleseed -h
29
+
30
+ And if you'd like to use Whirl code inside of Ruby, that can be done:
29
31
 
32
+ require 'rubygems'
33
+ require 'mapleseed'
34
+
35
+ ms = Mapleseed::Interpreter.new
36
+ ms.run("011000001111000011111000001111
37
+ 00001111100000111100001111100000110010
38
+ 00001100111110001110001111000110011100
39
+ 00000001111100010001111100110011111000
40
+ 10001100")
41
+
30
42
  == Things That Might Get Done Eventually
31
43
 
32
- * REPL
33
- * File minimizer (turn whirl code into binary files and vice versa)
34
- * Unit testing
44
+ * File minimizer (turn whirl code into tiny binary files and vice versa)
45
+ * Testing
35
46
 
36
47
  == History
37
48
 
49
+ * 0.1.1 - Added REPL
38
50
  * 0.1.0 - Initial release. Allows running code passed in or from a file.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -28,8 +28,8 @@ end
28
28
  ms = Mapleseed::Base.new
29
29
  case options[:mode]
30
30
  when :repl
31
- # puts "Starting interactive interpreter..."
32
- # ms.repl
31
+ puts "Starting interactive interpreter..."
32
+ ms.repl
33
33
  when :file
34
34
  puts "Running file..."
35
35
  ms.load_file(options[:file])
@@ -22,7 +22,39 @@ module Mapleseed
22
22
 
23
23
  # interactive read-evaluate-print loop
24
24
  def repl
25
- throw "Unimplemented"
25
+ puts "'exit' or Ctrl-X leaves the REPL"
26
+ puts "'op' gives information about the operation ring position and value"
27
+ puts "'math' gives information about the math ring position and value"
28
+ puts "'mem' gives information about the current cell of memory"
29
+ puts "'reset' clears the memory and resets the rings"
30
+ while true
31
+ puts ""
32
+ print "mapleseed> "
33
+ input = gets.chomp
34
+ case input
35
+ when "exit", 24.chr
36
+ puts "Exiting"
37
+ break
38
+ when "op"
39
+ puts "Operations Ring:"
40
+ puts "Position: #{@interpreter.op_ring.position} Value: #{@interpreter.op_ring.value}"
41
+ dir = ""
42
+ @interpreter.op_ring.direction == 1 ? dir = "Clockwise" : dir = "Counter-clockwise"
43
+ puts "Direction: #{dir} Current operation: #{@interpreter.op_ring.commands[@interpreter.op_ring.position].to_s}"
44
+ when "math"
45
+ puts "Math Ring:"
46
+ puts "Position: #{@interpreter.math_ring.position} Value: #{@interpreter.math_ring.value}"
47
+ dir = ""
48
+ @interpreter.math_ring.direction == 1 ? dir = "Clockwise" : dir = "Counter-clockwise"
49
+ puts "Direction: #{dir} Current operation: #{@interpreter.math_ring.commands[@interpreter.math_ring.position].to_s}"
50
+ when "mem"
51
+ puts "Cell: #{@interpreter.memory_position} Value: #{@interpreter.memory.get(@interpreter.memory_position)}"
52
+ when "reset"
53
+ @interpreter.initialize_environment
54
+ else
55
+ @interpreter.run(input)
56
+ end
57
+ end
26
58
  end
27
59
  end
28
60
  end
@@ -4,7 +4,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), "ring.rb"))
4
4
  module Mapleseed
5
5
  #interprets Whirl code
6
6
  class Interpreter
7
- attr_reader :memory
7
+ attr_reader :memory, :op_ring, :math_ring
8
8
  attr_accessor :memory_position, :program_position,
9
9
  :input_stream, :output_stream
10
10
 
@@ -2,6 +2,8 @@ module Mapleseed
2
2
  # base class for whirl command rings
3
3
  class Ring
4
4
 
5
+ attr_reader :position, :value, :direction, :commands
6
+
5
7
  # initialize the ring
6
8
  def initialize(interpreter)
7
9
  @position = 0
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mapleseed}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Chris ONeal"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mapleseed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ default_executable: mapleseed
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: shoulda
17
- requirement: &7584708 !ruby/object:Gem::Requirement
17
+ requirement: &7559964 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *7584708
25
+ version_requirements: *7559964
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bundler
28
- requirement: &7583712 !ruby/object:Gem::Requirement
28
+ requirement: &7558872 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.0.0
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *7583712
36
+ version_requirements: *7558872
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: jeweler
39
- requirement: &7579488 !ruby/object:Gem::Requirement
39
+ requirement: &7557984 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 1.5.2
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *7579488
47
+ version_requirements: *7557984
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rcov
50
- requirement: &7578780 !ruby/object:Gem::Requirement
50
+ requirement: &7556820 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,7 +55,7 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *7578780
58
+ version_requirements: *7556820
59
59
  description: A simple Whirl interpreter
60
60
  email: ctoneal@gmail.com
61
61
  executables:
@@ -94,7 +94,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
94
  version: '0'
95
95
  segments:
96
96
  - 0
97
- hash: -565126381
97
+ hash: 905466017
98
98
  required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  none: false
100
100
  requirements: