sapphire-exp-env 0.3.0 → 0.4.0
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.
- data/VERSION +1 -1
- data/lib/sapphire-exp-env.rb +67 -15
- data/sapphire-exp-env.gemspec +2 -2
- metadata +15 -15
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/lib/sapphire-exp-env.rb
CHANGED
@@ -3,17 +3,13 @@ class Sapphire
|
|
3
3
|
require 'thor'
|
4
4
|
require 'open-uri'
|
5
5
|
class Command < Thor
|
6
|
-
|
7
|
-
desc 'hello', 'Hello, World!'
|
8
|
-
def hello
|
9
|
-
puts 'Hello, Wolrd...'
|
10
|
-
end
|
11
6
|
|
12
|
-
desc 'generates
|
7
|
+
desc 'generates args1 [args2] ...', 'Generates necessary file(s) for Sapphire'
|
13
8
|
long_desc <<-D
|
14
|
-
|
15
|
-
|
16
|
-
rvm ...
|
9
|
+
This command enerates necessary file(s) for Sapphire.
|
10
|
+
Subcommands below:
|
11
|
+
rvm instructions ... genreates instruction.rb from insns.def
|
12
|
+
...
|
17
13
|
D
|
18
14
|
def generates(*args)
|
19
15
|
name = args.shift
|
@@ -22,16 +18,72 @@ class Sapphire
|
|
22
18
|
object = args.shift
|
23
19
|
case object
|
24
20
|
when /instructions/
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
21
|
+
create_instruction_class
|
22
|
+
else
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def create_instruction_class
|
30
|
+
url = 'https://raw.github.com/ruby/ruby/trunk/insns.def'
|
31
|
+
file_name = url.split(/\//).last
|
32
|
+
begin
|
33
|
+
open(url) do |source|
|
34
|
+
open(file_name, "w+b") do |output|
|
35
|
+
output.print source.read
|
36
|
+
end
|
37
|
+
end
|
38
|
+
rescue
|
39
|
+
raise "retrieving error(insns.def)"
|
40
|
+
end
|
41
|
+
open("instructions.rb", "w+b") do |output|
|
42
|
+
output.print put_instruction_class_header
|
43
|
+
output.print put_instruction_class_insn file_name, output
|
44
|
+
output.print put_instruction_class_footer
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def put_instruction_class_header
|
49
|
+
return <<-EOL2
|
50
|
+
class RubyVM
|
51
|
+
class InstructionSequence
|
52
|
+
class Instruction
|
53
|
+
InsnID2NO = {
|
54
|
+
EOL2
|
55
|
+
end
|
56
|
+
|
57
|
+
def put_instruction_class_insn(file_name, output)
|
58
|
+
open(file_name) {|file|
|
59
|
+
ino = -1 # initial instruction no
|
60
|
+
while line = file.gets
|
61
|
+
if /DEFINE_INSN/ =~ line
|
62
|
+
iname = file.gets.chop
|
63
|
+
if ino != -1
|
64
|
+
output.print <<-"EOL1"
|
65
|
+
:#{iname} => #{ino},
|
66
|
+
EOL1
|
30
67
|
end
|
68
|
+
ino += 1
|
31
69
|
end
|
32
|
-
|
70
|
+
end
|
71
|
+
}
|
72
|
+
end
|
73
|
+
|
74
|
+
def put_instruction_class_footer
|
75
|
+
return <<-EOL3
|
76
|
+
}
|
77
|
+
def self.id2insn_no id
|
78
|
+
if InsnID2NO.has_key? id
|
79
|
+
InsnID2NO[id]
|
33
80
|
end
|
34
81
|
end
|
35
82
|
end
|
36
83
|
end
|
84
|
+
end
|
85
|
+
EOL3
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
37
89
|
end
|
data/sapphire-exp-env.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "sapphire-exp-env"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Ken ichi AKIMOTO"]
|
12
|
-
s.date = "2011-09-
|
12
|
+
s.date = "2011-09-16"
|
13
13
|
s.description = "An experiment environment for the prototype development of the programing language Sapphire."
|
14
14
|
s.email = "matthew.szulik@gmail.com"
|
15
15
|
s.executables = ["sapphire"]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sapphire-exp-env
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-09-
|
12
|
+
date: 2011-09-16 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &75522040 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.3.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *75522040
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &75521740 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.0.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *75521740
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jeweler
|
38
|
-
requirement: &
|
38
|
+
requirement: &75521440 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.6.4
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *75521440
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rcov
|
49
|
-
requirement: &
|
49
|
+
requirement: &75521150 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *75521150
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: iseq
|
60
|
-
requirement: &
|
60
|
+
requirement: &75520850 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 0.0.3.2
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *75520850
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: thor
|
71
|
-
requirement: &
|
71
|
+
requirement: &75520550 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: 0.14.6
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *75520550
|
80
80
|
description: An experiment environment for the prototype development of the programing
|
81
81
|
language Sapphire.
|
82
82
|
email: matthew.szulik@gmail.com
|
@@ -115,7 +115,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
115
115
|
version: '0'
|
116
116
|
segments:
|
117
117
|
- 0
|
118
|
-
hash:
|
118
|
+
hash: 925065057
|
119
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
120
|
none: false
|
121
121
|
requirements:
|