mapleseed 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: