parsetree19 0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +155 -0
- data/NEWS +2 -0
- data/README.md +8 -0
- data/Rakefile +158 -0
- data/ext/add_to_parse_tree.inc +906 -0
- data/ext/extconf.rb +8 -0
- data/ext/parse_tree.c +149 -0
- data/include/method_mini.h +90 -0
- data/include/node.h +483 -0
- data/include/ruby19_externs.h +36 -0
- data/include/thread_pthread.h +24 -0
- data/include/vm_core_mini.h +369 -0
- data/test/unit/test_parse_tree_for_meth.rb +33 -0
- data/test/unit/test_parse_tree_for_str.rb +162 -0
- metadata +80 -0
data/ChangeLog
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
2010-12-25 rocky <rockyb@rubyforge.org>
|
2
|
+
|
3
|
+
* ChangeLog: Update README.md to include usage.
|
4
|
+
|
5
|
+
2010-12-25 rocky <rockyb@rubyforge.org>
|
6
|
+
|
7
|
+
* ChangeLog, NEWS, Rakefile, ext/parse_tree.c: Make sure we use a
|
8
|
+
threadframe-patched Ruby 1.9.2
|
9
|
+
|
10
|
+
2010-12-25 rocky <rockyb@rubyforge.org>
|
11
|
+
|
12
|
+
* ChangeLog, Rakefile: Need one more file...
|
13
|
+
|
14
|
+
2010-12-25 rocky <rockyb@rubyforge.org>
|
15
|
+
|
16
|
+
* ChangeLog, NEWS, Rakefile: Administrivia for first release.
|
17
|
+
|
18
|
+
2010-12-25 rocky <rockyb@rubyforge.org>
|
19
|
+
|
20
|
+
* Rakefile, ext/add_to_parse_tree.inc, ext/parse_tree.c,
|
21
|
+
test/unit/test_parse_tree_for_meth.rb: Finish Node parsing. Add
|
22
|
+
parse_tree_for_method and parse_tree_for_iseq.
|
23
|
+
|
24
|
+
2010-12-25 rocky <rockyb@rubyforge.org>
|
25
|
+
|
26
|
+
* ext/add_to_parse_tree.inc, ext/parse_tree.c,
|
27
|
+
test/unit/test_parse_tree_for_str.rb: Add parse_tree_for_method. Add
|
28
|
+
more nodes types. New ones are largely untested. More work is
|
29
|
+
needed in a patched Rub to save method nodes
|
30
|
+
|
31
|
+
2010-07-12 rocky <rockyb@rubyforge.org>
|
32
|
+
|
33
|
+
* Rakefile: Add include files to package/gem.
|
34
|
+
|
35
|
+
2010-06-17 rocky <rockyb@rubyforge.org>
|
36
|
+
|
37
|
+
* ext/add_to_parse_tree.inc, test/unit/test_parse_tree_for_str.rb:
|
38
|
+
Add nodes array and values. Warning: array alen doesn't look like a
|
39
|
+
fixnum for the first array alen. It's also the same way in node.c or
|
40
|
+
parse_tree_dump.
|
41
|
+
|
42
|
+
2010-06-16 rocky <rockyb@rubyforge.org>
|
43
|
+
|
44
|
+
* ext/add_to_parse_tree.inc, test/unit/test_parse_tree_for_str.rb:
|
45
|
+
Add nodes asgn1, zarray, and hash. Really need to add "array" next.
|
46
|
+
|
47
|
+
|
48
|
+
2010-06-15 rocky <rockyb@rubyforge.org>
|
49
|
+
|
50
|
+
* ext/add_to_parse_tree.inc, test/unit/test_parse_tree_for_str.rb:
|
51
|
+
Add 'begin', 'rescue', 'resbody', and 'ensure'
|
52
|
+
|
53
|
+
2010-06-11 rocky <rockyb@rubyforge.org>
|
54
|
+
|
55
|
+
* ext/add_to_parse_tree.inc, test/unit/test_parse_tree_for_str.rb:
|
56
|
+
Add nodes: case, when, opt_n, while, until, gasn, dot2, dot2, flip2,
|
57
|
+
and flip3. Some of these remain untested.
|
58
|
+
|
59
|
+
2010-06-10 rocky <rockyb@rubyforge.org>
|
60
|
+
|
61
|
+
* ext/add_to_parse_tree.inc: Add nodes 'iter', 'for', 'call', and
|
62
|
+
'fcall'
|
63
|
+
|
64
|
+
2010-06-10 rocky <rockyb@rubyforge.org>
|
65
|
+
|
66
|
+
* ext/add_to_parse_tree.inc: Add nodes block, if, alias, valias and
|
67
|
+
undef.
|
68
|
+
|
69
|
+
2010-06-09 rocky <rockyb@rubyforge.org>
|
70
|
+
|
71
|
+
* ext/add_to_parse_tree.inc, ext/parse_tree.c: Add nodes 'and',
|
72
|
+
'or', 'zsuper', and 'vcall'. Split longish add_to_parse_tree()
|
73
|
+
routine into a separate file. F_NODE() now matches node.c's better.
|
74
|
+
|
75
|
+
|
76
|
+
2010-06-09 rocky <rockyb@rubyforge.org>
|
77
|
+
|
78
|
+
* ext/parse_tree.c: Add "break", "next", and "return"
|
79
|
+
|
80
|
+
2010-06-09 rocky <rockyb@rubyforge.org>
|
81
|
+
|
82
|
+
* ext/parse_tree.c: Add gvar
|
83
|
+
|
84
|
+
2010-06-09 rocky <rockyb@rubyforge.org>
|
85
|
+
|
86
|
+
* ext/parse_tree.c, test/unit/test_parse_tree_for_str.rb: Add
|
87
|
+
op_asgn_and and opt_asgn_or
|
88
|
+
|
89
|
+
2010-06-08 rocky <rockyb@rubyforge.org>
|
90
|
+
|
91
|
+
* test/unit/test_parse_tree_for_str.rb: Tests for new ops.
|
92
|
+
|
93
|
+
2010-06-08 rocky <rockyb@rubyforge.org>
|
94
|
+
|
95
|
+
* ext/parse_tree.c: Add nilary opts: redo, retry, yield; some
|
96
|
+
variable assignments: lasgn, iasgn, cvasgn; variable and constant
|
97
|
+
refs: ivar, const, cvar, colon2, colon3 and 'defined?'.
|
98
|
+
|
99
|
+
2010-06-07 rocky <rockyb@rubyforge.org>
|
100
|
+
|
101
|
+
* ext/parse_tree.c, include, test/unit/test_parse_tree_for_str.rb:
|
102
|
+
Add the various kinds of string and regexp literals.
|
103
|
+
|
104
|
+
2010-06-07 R. Bernstein <rocky@gnu.org>
|
105
|
+
|
106
|
+
* include: Submodule stuff again
|
107
|
+
|
108
|
+
2010-06-07 R. Bernstein <rocky@gnu.org>
|
109
|
+
|
110
|
+
* .gitmodules: Change submodule URL
|
111
|
+
|
112
|
+
2010-06-07 R. Bernstein <rocky@gnu.org>
|
113
|
+
|
114
|
+
* include: Correct submodule path
|
115
|
+
|
116
|
+
2010-06-07 rocky <rockyb@rubyforge.org>
|
117
|
+
|
118
|
+
* Rakefile, ext/parse_tree.c, test/.gitignore,
|
119
|
+
test/unit/.gitignore, test/unit/test_parse_tree_for_str.rb: Add NODE
|
120
|
+
types 'lit', 'str', and 'xstr'. Start unit tests.
|
121
|
+
|
122
|
+
2010-06-07 rocky <rockyb@rubyforge.org>
|
123
|
+
|
124
|
+
* ext/parse_tree.c: We now handle NODE_TRUE, NODE_FALSE and NODE_NIL
|
125
|
+
- woohoo!
|
126
|
+
|
127
|
+
2010-06-06 rocky <rockyb@rubyforge.org>
|
128
|
+
|
129
|
+
* Rakefile: "rake" and "rake gem" should now work.
|
130
|
+
|
131
|
+
2010-06-06 rocky <rockyb@rubyforge.org>
|
132
|
+
|
133
|
+
* ext/parse_tree.c: Start to fill in node handling to see what is
|
134
|
+
involved. Looks like a merge of code with node.c with parse_tree.rb
|
135
|
+
|
136
|
+
|
137
|
+
2010-06-06 rocky <rockyb@rubyforge.org>
|
138
|
+
|
139
|
+
* README.md: Wrong name. This time for sure!
|
140
|
+
|
141
|
+
2010-06-06 rocky <rockyb@rubyforge.org>
|
142
|
+
|
143
|
+
* ext/.gitignore, ext/extconf.rb, ext/parse_tree.c: Method
|
144
|
+
parse_tree_dump - a wrapper for the routine in Ruby 1.9 dump.
|
145
|
+
Interim but possibly an encouraging first step.
|
146
|
+
|
147
|
+
2010-06-06 rocky <rockyb@rubyforge.org>
|
148
|
+
|
149
|
+
* .gitmodules, include: Add common Ruby 1.9 headers as a submodule.
|
150
|
+
|
151
|
+
|
152
|
+
2010-06-06 r <rocky@static-71-183-236-17.nycmny.fios.verizon.net>
|
153
|
+
|
154
|
+
* Start ParseTree for Ruby 1.9 - C-extension part
|
155
|
+
|
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,158 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
# -*- Ruby -*-
|
3
|
+
require 'rubygems'
|
4
|
+
require 'rake/gempackagetask'
|
5
|
+
require 'rake/rdoctask'
|
6
|
+
require 'rake/testtask'
|
7
|
+
|
8
|
+
rake_dir = File.dirname(__FILE__)
|
9
|
+
|
10
|
+
require 'rbconfig'
|
11
|
+
RUBY_PATH = File.join(Config::CONFIG['bindir'],
|
12
|
+
Config::CONFIG['RUBY_INSTALL_NAME'])
|
13
|
+
|
14
|
+
SO_NAME = 'parsetree19.so'
|
15
|
+
|
16
|
+
PACKAGE_VERSION = open("ext/parse_tree.c") do |f|
|
17
|
+
f.grep(/^#define PARSETREE19_VERSION/).first[/"(.+)"/,1]
|
18
|
+
end
|
19
|
+
|
20
|
+
EXT_FILES = FileList[%w(ext/*.c ext/*.h ext/*.inc)]
|
21
|
+
INCLUDE_FILES = FileList['include/*.h']
|
22
|
+
LIB_FILES = FileList['lib/*.rb']
|
23
|
+
TEST_FILES = FileList['test/*/*.rb']
|
24
|
+
COMMON_FILES = FileList[%w(README.md Rakefile NEWS ChangeLog)]
|
25
|
+
ALL_FILES = COMMON_FILES + INCLUDE_FILES + LIB_FILES + EXT_FILES +
|
26
|
+
TEST_FILES
|
27
|
+
|
28
|
+
desc 'Create the core thread-frame shared library extension'
|
29
|
+
task :ext do
|
30
|
+
Dir.chdir('ext') do
|
31
|
+
system("#{Gem.ruby} extconf.rb && make")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
desc 'Remove built files'
|
36
|
+
task :clean do
|
37
|
+
cd 'ext' do
|
38
|
+
if File.exist?('Makefile')
|
39
|
+
sh 'make clean'
|
40
|
+
rm 'Makefile'
|
41
|
+
end
|
42
|
+
derived_files = Dir.glob('.o') + Dir.glob('*.so')
|
43
|
+
rm derived_files unless derived_files.empty?
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def run_standalone_ruby_file(directory)
|
48
|
+
puts ('*' * 10) + ' ' + directory + ' ' + ('*' * 10)
|
49
|
+
Dir.chdir(directory) do
|
50
|
+
Dir.glob('*.rb').each do |ruby_file|
|
51
|
+
puts ('-' * 20) + ' ' + ruby_file + ' ' + ('-' * 20)
|
52
|
+
system(RUBY_PATH, ruby_file)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
desc "Create a GNU-style ChangeLog via git2cl"
|
58
|
+
task :ChangeLog do
|
59
|
+
system("git log --pretty --numstat --summary | git2cl > ChangeLog")
|
60
|
+
end
|
61
|
+
|
62
|
+
task :default => [:test]
|
63
|
+
|
64
|
+
desc 'Test units - the smaller tests'
|
65
|
+
Rake::TestTask.new(:'test:unit') do |t|
|
66
|
+
t.libs << './ext'
|
67
|
+
t.test_files = FileList['test/unit/**/*.rb']
|
68
|
+
# t.pattern = 'test/**/*test-*.rb' # instead of above
|
69
|
+
t.verbose = true
|
70
|
+
end
|
71
|
+
task :'test:unit' => [:ext]
|
72
|
+
|
73
|
+
desc 'Test everything - unit tests for now.'
|
74
|
+
task :test do
|
75
|
+
exceptions = ['test:unit'].collect do |task|
|
76
|
+
begin
|
77
|
+
Rake::Task[task].invoke
|
78
|
+
nil
|
79
|
+
rescue => e
|
80
|
+
e
|
81
|
+
end
|
82
|
+
end.compact
|
83
|
+
|
84
|
+
exceptions.each {|e| puts e;puts e.backtrace }
|
85
|
+
raise "Test failures" unless exceptions.empty?
|
86
|
+
end
|
87
|
+
|
88
|
+
desc "Test everything - same as test."
|
89
|
+
|
90
|
+
task :'check' do
|
91
|
+
run_standalone_ruby_file(File.join(%W(#{rake_dir} test unit)))
|
92
|
+
end
|
93
|
+
|
94
|
+
# --------- RDoc Documentation ------
|
95
|
+
desc 'Generate rdoc documentation'
|
96
|
+
Rake::RDocTask.new('rdoc') do |rdoc|
|
97
|
+
rdoc.rdoc_dir = 'doc/rdoc'
|
98
|
+
rdoc.title = 'parsetree19'
|
99
|
+
# Show source inline with line numbers
|
100
|
+
rdoc.options << '--inline-source' << '--line-numbers'
|
101
|
+
# Make the readme file the start page for the generated html
|
102
|
+
rdoc.options << '--main' << 'README.md'
|
103
|
+
rdoc.rdoc_files.include('ext/**/*.c',
|
104
|
+
'README.md')
|
105
|
+
end
|
106
|
+
|
107
|
+
# Base GEM Specification
|
108
|
+
spec = Gem::Specification.new do |spec|
|
109
|
+
spec.name = "parsetree19"
|
110
|
+
|
111
|
+
spec.homepage = "http://github.com/rocky/rb-parsetree19/tree/master"
|
112
|
+
spec.summary = "Frame introspection"
|
113
|
+
spec.description = <<-EOF
|
114
|
+
|
115
|
+
rb-parsetree is the C extension part of ParseTree for Ruby 1.9.
|
116
|
+
EOF
|
117
|
+
|
118
|
+
spec.version = PACKAGE_VERSION
|
119
|
+
spec.require_path = 'lib'
|
120
|
+
spec.extensions = ["ext/extconf.rb"]
|
121
|
+
|
122
|
+
spec.author = "R. Bernstein"
|
123
|
+
spec.email = "rockyb@rubyforge.org"
|
124
|
+
spec.platform = Gem::Platform::RUBY
|
125
|
+
spec.files = ALL_FILES.to_a
|
126
|
+
|
127
|
+
spec.required_ruby_version = '~> 1.9.2frame'
|
128
|
+
spec.date = Time.now
|
129
|
+
# spec.rubyforge_project = 'rocky-hacks'
|
130
|
+
|
131
|
+
# rdoc
|
132
|
+
spec.has_rdoc = true
|
133
|
+
spec.extra_rdoc_files = ['README.md'] + FileList['ext/*.c']
|
134
|
+
end
|
135
|
+
|
136
|
+
# Rake task to build the default package
|
137
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
138
|
+
pkg.need_tar = true
|
139
|
+
end
|
140
|
+
|
141
|
+
def install(spec, *opts)
|
142
|
+
args = ['gem', 'install', "pkg/#{spec.name}-#{spec.version}.gem"] + opts
|
143
|
+
system(*args)
|
144
|
+
end
|
145
|
+
|
146
|
+
desc 'Install locally'
|
147
|
+
task :install => :package do
|
148
|
+
Dir.chdir(File::dirname(__FILE__)) do
|
149
|
+
# ri and rdoc take lots of time
|
150
|
+
install(spec, '--no-ri', '--no-rdoc')
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
task :install_full => :package do
|
155
|
+
Dir.chdir(File::dirname(__FILE__)) do
|
156
|
+
install(spec)
|
157
|
+
end
|
158
|
+
end
|