parser 0.9.alpha → 0.9.alpha1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,46 @@
1
+ # encoding: ascii-8bit
2
+
3
+ require 'minitest/autorun'
4
+ require 'parser/static_environment'
5
+
6
+ class TestStaticEnvironment < MiniTest::Unit::TestCase
7
+ def setup
8
+ @env = Parser::StaticEnvironment.new
9
+ end
10
+
11
+ def test_declare
12
+ refute @env.declared?(:foo)
13
+
14
+ @env.declare :foo
15
+
16
+ assert @env.declared?(:foo)
17
+ end
18
+
19
+ def test_extend_static
20
+ @env.declare :foo
21
+ @env.extend_static
22
+ @env.declare :bar
23
+
24
+ refute @env.declared?(:foo)
25
+ assert @env.declared?(:bar)
26
+ end
27
+
28
+ def test_extend_dynamic
29
+ @env.declare :foo
30
+ @env.extend_dynamic
31
+ @env.declare :bar
32
+
33
+ assert @env.declared?(:foo)
34
+ assert @env.declared?(:bar)
35
+ end
36
+
37
+ def test_unextend
38
+ @env.declare :foo
39
+ @env.extend_dynamic
40
+ @env.declare :bar
41
+ @env.unextend
42
+
43
+ assert @env.declared?(:foo)
44
+ refute @env.declared?(:bar)
45
+ end
46
+ end
metadata CHANGED
@@ -1,163 +1,104 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.alpha
4
+ version: 0.9.alpha1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Zotov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-28 00:00:00.000000000 Z
11
+ date: 2013-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: sexp_processor
14
+ name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '4.1'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: '4.1'
27
- - !ruby/object:Gem::Dependency
28
- name: minitest
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ~>
32
- - !ruby/object:Gem::Version
33
- version: '4.7'
19
+ version: '1.3'
34
20
  type: :development
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
24
  - - ~>
39
25
  - !ruby/object:Gem::Version
40
- version: '4.7'
26
+ version: '1.3'
41
27
  - !ruby/object:Gem::Dependency
42
- name: rdoc
28
+ name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - ~>
46
32
  - !ruby/object:Gem::Version
47
- version: '3.10'
33
+ version: '10.0'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - ~>
53
39
  - !ruby/object:Gem::Version
54
- version: '3.10'
40
+ version: '10.0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: racc
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - ~>
45
+ - - '>='
60
46
  - !ruby/object:Gem::Version
61
- version: 1.4.6
47
+ version: '0'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - ~>
67
- - !ruby/object:Gem::Version
68
- version: 1.4.6
69
- - !ruby/object:Gem::Dependency
70
- name: hoe
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ~>
74
- - !ruby/object:Gem::Version
75
- version: '3.5'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ~>
52
+ - - '>='
81
53
  - !ruby/object:Gem::Version
82
- version: '3.5'
83
- description: |-
84
- ruby_parser (RP) is a ruby parser written in pure ruby (utilizing
85
- racc--which does by default use a C extension). RP's output is
86
- the same as ParseTree's output: s-expressions using ruby's arrays and
87
- base types.
88
-
89
- As an example:
90
-
91
- def conditional1 arg1
92
- return 1 if arg1 == 0
93
- return 0
94
- end
95
-
96
- becomes:
97
-
98
- s(:defn, :conditional1, s(:args, :arg1),
99
- s(:if,
100
- s(:call, s(:lvar, :arg1), :==, s(:lit, 0)),
101
- s(:return, s(:lit, 1)),
102
- nil),
103
- s(:return, s(:lit, 0)))
54
+ version: '0'
55
+ description: A Ruby parser.
104
56
  email:
105
57
  - whitequark@whitequark.org
106
- executables:
107
- - ruby_parse
108
- - ruby_parse_extract_error
58
+ executables: []
109
59
  extensions: []
110
- extra_rdoc_files:
111
- - History.txt
112
- - Manifest.txt
113
- - README.txt
60
+ extra_rdoc_files: []
114
61
  files:
115
- - .autotest
116
- - History.txt
117
- - Manifest.txt
118
- - README.txt
62
+ - .gitignore
63
+ - .travis.yml
64
+ - Gemfile
65
+ - LICENSE.txt
66
+ - README.md
119
67
  - Rakefile
120
- - bin/ruby_parse
121
- - bin/ruby_parse_extract_error
122
- - lib/gauntlet_rubyparser.rb
123
- - lib/ruby18_parser.rb
124
- - lib/ruby18_parser.y
125
- - lib/ruby19_parser.rb
126
- - lib/ruby19_parser.y
127
- - lib/ruby_lexer.rb
128
- - lib/ruby_parser.rb
129
- - lib/ruby_parser_extras.rb
130
- - test/test_ruby_lexer.rb
131
- - test/test_ruby_parser.rb
132
- - test/test_ruby_parser_extras.rb
133
- - .gemtest
134
- homepage: https://github.com/seattlerb/ruby_parser
135
- licenses: []
68
+ - lib/parser.rb
69
+ - lib/parser/lexer.rl
70
+ - lib/parser/lexer_literal.rb
71
+ - lib/parser/static_environment.rb
72
+ - lib/parser/syntax_error.rb
73
+ - parser.gemspec
74
+ - test/test_lexer.rb
75
+ - test/test_static_environment.rb
76
+ - lib/parser/lexer.rb
77
+ homepage: http://github.com/whitequark/parser
78
+ licenses:
79
+ - MIT
136
80
  metadata: {}
137
81
  post_install_message:
138
- rdoc_options:
139
- - --main
140
- - README.txt
82
+ rdoc_options: []
141
83
  require_paths:
142
84
  - lib
143
85
  required_ruby_version: !ruby/object:Gem::Requirement
144
86
  requirements:
145
87
  - - '>='
146
88
  - !ruby/object:Gem::Version
147
- version: '0'
89
+ version: '1.9'
148
90
  required_rubygems_version: !ruby/object:Gem::Requirement
149
91
  requirements:
150
92
  - - '>'
151
93
  - !ruby/object:Gem::Version
152
94
  version: 1.3.1
153
95
  requirements: []
154
- rubyforge_project: parser
96
+ rubyforge_project:
155
97
  rubygems_version: 2.0.0
156
98
  signing_key:
157
99
  specification_version: 4
158
- summary: ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc--which
159
- does by default use a C extension)
100
+ summary: A Ruby parser.
160
101
  test_files:
161
- - test/test_ruby_lexer.rb
162
- - test/test_ruby_parser.rb
163
- - test/test_ruby_parser_extras.rb
102
+ - test/test_lexer.rb
103
+ - test/test_static_environment.rb
104
+ has_rdoc:
data/.autotest DELETED
@@ -1,50 +0,0 @@
1
- # -*- ruby -*-
2
-
3
- require 'autotest/restart'
4
- require 'autotest/isolate'
5
- require 'autotest/rcov' if ENV['RCOV']
6
-
7
- Autotest.add_hook :initialize do |at|
8
- at.extra_files << "../../sexp_processor/dev/lib/pt_testcase.rb"
9
- at.libs << ":../../sexp_processor/dev/lib"
10
- at.add_exception 'unit'
11
- at.add_exception 'coverage'
12
- at.add_exception 'coverage.info'
13
- at.add_exception '.diff'
14
- at.add_exception 'rubycorpus'
15
-
16
- dirs = Dir["corpus*"] + Dir["gauntlet*"]
17
-
18
- dirs.each do |f|
19
- at.add_exception f
20
- end
21
-
22
- at.libs << ':../../minitest/dev/lib'
23
- at.testlib = "minitest/autorun"
24
-
25
- at.add_mapping(/^lib\/.*\.y$/) do |f, _|
26
- at.files_matching %r%^test/.*#{File.basename(f, '.y').gsub '_', '_?'}.rb$%
27
- end
28
-
29
- at.add_mapping(/pt_testcase.rb/) do |f, _|
30
- at.files_matching(/test_.*rb$/)
31
- end
32
-
33
- %w(TestEnvironment TestStackState).each do |klass|
34
- at.extra_class_map[klass] = "test/test_ruby_parser_extras.rb"
35
- end
36
-
37
- %w(TestRuby18Parser TestRuby19Parser TestParseTree).each do |klass| # HACK
38
- at.extra_class_map[klass] = "test/test_ruby_parser.rb"
39
- end
40
- end
41
-
42
- Autotest.add_hook :run_command do |at, _|
43
- system "rake parser DEBUG=1"
44
- end
45
-
46
- class Autotest
47
- def ruby
48
- File.expand_path "~/.multiruby/install/1.9.0-0/bin/ruby"
49
- end
50
- end if ENV['ONENINE']
data/.gemtest DELETED
File without changes
@@ -1,558 +0,0 @@
1
- === 3.1.2 / 2013-03-18
2
-
3
- * 1 minor enhancement:
4
-
5
- * OMG A SECURITY ISSUE FOR CODE NOBODY USES... EVER
6
-
7
- === 3.1.1 / 2012-12-19
8
-
9
- * 1 minor enhancement:
10
-
11
- * Added MOVE_TIMEOUT env var for ruby_parse_extract_error to move slow files to a sibling directory
12
-
13
- * 4 bug fixes:
14
-
15
- * 1.9: Fixed lexing of "0o". (whitequark)
16
- * 1.9: Fixed parsing of unary plus on literals. (whitequark)
17
- * Added timeout arg to RubyParser#process to pass through to the real parser
18
- * Updated Synopsis to reflect new options for running RP. (louismullie)
19
-
20
- === 3.1.0 / 2012-12-06
21
-
22
- * 2 minor enhancements:
23
-
24
- * Added RubyParser.for_current_ruby to provide a parser that matches your runtime. (neilconway)
25
- * Duck-typed IDENT_CHAR_RE instead of using RUBY_VERSION
26
-
27
- * 3 bug fixes:
28
-
29
- * Cleared out body comments in class/module/defn/defs
30
- * Flipped lexer tests to US-ASCII to avoid encoding hell
31
- * yyerror is now an alias for syntax_error
32
-
33
- === 3.0.4 / 2012-11-26
34
-
35
- * 1 bug fix:
36
-
37
- * RPStringScanner#lineno was still using byte offset, not char offset. (brynary)
38
-
39
- === 3.0.3 / 2012-11-23
40
-
41
- * 1 minor enhancement:
42
-
43
- * Improved error output on invalid char in expression.
44
-
45
- * 1 bug fix:
46
-
47
- * Fixed lexing of no-name ivars. (whitequark)
48
-
49
- === 3.0.2 / 2012-11-21
50
-
51
- 52 down makes 99.9767% or 3.7σ. 130 files failed to parse out of 558k.
52
-
53
- * 4 minor enhancements:
54
-
55
- * Added RP_TIMEOUT env var to override default timeout of 10 seconds.
56
- * Minor optimization to RubyLexer#parse_number
57
- * Only output parseerror output to stderr if $DEBUG.
58
- * ruby_parse_extract_error modified to include 'it' blocks in its search.
59
-
60
- * 7 bug fixes:
61
-
62
- * 1.9: Fixed args in dot-call forms (eg f.(...)).
63
- * 1.9: Fixed lexing stabby lambda w/ do/end
64
- * Deal better with DOS files. Ugh.
65
- * Fix line number of production after heredoc.
66
- * Fixed RubyParser#process to reuse parser instances across calls.
67
- * Fixed line numbers for several productions.
68
- * new_call sets line number to smallest line number of members.
69
-
70
- === 3.0.1 / 2012-11-02
71
-
72
- * 2 bug fixes -- both based on MRI bugs... Yay?:
73
-
74
- * 1.9.2 doesn't have String#byteslice... so I have to do the *HORRIBLE*.
75
- * Lexing regexps w/ bad character encodings and no declared options will fall back to /.../n.
76
-
77
- === 3.0.0 / 2012-11-02
78
-
79
- I've hit 99.967% success rate against 558k files! 3.6σ!! 182 files
80
- failed to parse and spot checking them shows that they're pretty much
81
- lost causes. I'm sure I missed some stuff, but it is more important at
82
- this point to release a version to get more people using it in more
83
- diverse ways than I can come up with.
84
-
85
- * 3 minor enhancements:
86
-
87
- * Added RBStringScanner#charpos using #string_to_pos.
88
- * Added RBStringScanner#string_to_pos using String#byteslice.
89
- * Optimized regexp used for escape chars in strings. (presidentbeef)
90
-
91
- * 3 bug fixes:
92
-
93
- * Fixed current_line and unread_many depending on StringScanner#pos
94
- * Fixed parsing of 'a[] = b'
95
- * Fixed the worst abuse of heredocs EVER. Just because it is valid doesn't mean you should.
96
-
97
- === 3.0.0.a10 / 2012-10-26
98
-
99
- * 1 major enhancement:
100
-
101
- * iter nodes are now structurally the same as defs. Block args are COMPLETELY different.
102
-
103
- * 4 minor enhancements:
104
-
105
- * 1.8 and 1.9 now treat f { |(...)| } differently, per MRI.
106
- * 1.9: Added __ENCODING__ support. (witlessbird)
107
- * 1.9: Finished coverage for masgn variants in block args
108
- * 1.9: covered all forms of block args: optional, splat, block, and destructuring
109
-
110
- === 3.0.0.a9 / 2012-10-22
111
-
112
- Holy crap! I've hit a 99.92% success rate against 558k files! 492
113
- failed parses to go. NOW is the time to start testing ruby_parser
114
- against your code!
115
-
116
- * 16 minor enhancements:
117
-
118
- * 1.9 parser: Finished magic encoding and utf-8 bom support.
119
- * 1.9: Added leading dot support eg "a\n.b".
120
- * 1.9: Added partial handling for *arg and opt=val args in block args.
121
- * 1.9: OMFG Encoding is the worst thing ever. Overhauled encoding support once again. It is much better at doing last ditch guessing of the encoding of the source file.
122
- * 1.9: added String#grep for legacy support.
123
- * Added Sexp#block_pass?
124
- * Added ability to delete slow files when they timeout.
125
- * Added block_dup_check and refactored grammar code to use it for block arg handling.
126
- * Added in_lex_state?(*states) to clean up lexer code.
127
- * Added tentative support for optional block args. THIS IS SUBJECT TO CHANGE!!
128
- * Added toggleable debugging to StackState to make my life easier
129
- * All untested uses have not moved but have been laced with poison.
130
- * Finally got good tests for most forms of double-block arg errors.
131
- * Moved all _known_ uses of SyntaxError to RubyParser::SyntaxError
132
- * f_block_optarg now always returns a block node.
133
- * ruby_parse_extract_error uses Find.find instead of globbing so dot files aren't missed.
134
-
135
- * 12 bug fixes:
136
-
137
- * 1.9: Completely ignore IndexError in unread_many because... you know... it sucks.
138
- * 1.9: Fixed lex state after lexing ? in trinary.
139
- * 1.9: Fixed lex state in some ternarys.
140
- * 1.9: Fixed parsing of "1 ? b('') : 2\na d: 3"... ARE YOU NOT GLAD?!?!
141
- * Fix Timeout differences between 1.8 and 1.9 :(
142
- * Fixed emacs-style encodings to deal with no whitespace.
143
- * Fixed error message for bad % codes. (whitequark)
144
- * Fixed lexing of :a==>b vs :a===b vs :a==>b. P.S. Your space bar is broken. chump.
145
- * Fixed lexing of rare numeric formats.
146
- * Fixed magic comment encodings on DOS files ... :/
147
- * Fixed ruby_parse_extract_error to exit non-zero on errors.
148
- * Removed Symbol#is_argument and switch usage to is_arg?
149
-
150
- === 3.0.0.a8 / 2012-09-26
151
-
152
- * 1 bug fix:
153
-
154
- * Remove method #d from global namespace. (alexch)
155
-
156
- === 3.0.0.a7 / 2012-09-21
157
-
158
- * 3 minor enhancements:
159
-
160
- * Reorganized ruby_parse_extract_error so it will start much faster with a bunch of glob directories
161
- * RubyParserStuff#process takes optional time arg and raises Timeout::Error if it goes too long. You should rescue that, ya know...
162
- * ruby_parse_extract_error now checks *.rake and Rakefile on dir scan.
163
-
164
- * 3 bug fixes:
165
-
166
- * 1.9: Fixed ternary state tracking so {a:f{f()},b:nil} won't trip up the lexer.
167
- * Fixed optional values in block args (no20/no21)
168
- * ruby_parse_extract_error skips non-files. Some asshats put .rb on their dirs. :(
169
-
170
- === 3.0.0.a6 / 2012-08-20
171
-
172
- * 2 minor enhancements:
173
-
174
- * 1.8: Added basic encoding support to 1.8 parser. Assumes -Ku.
175
- * 1.9: Added encoding magic comment support to 1.9 parser.
176
-
177
- * 8 bug fixes:
178
-
179
- * 1.9: Fixed lexing of -1 w/in conditionals. yeah... I dunno.
180
- * 1.9: Fixed parsing of a do | | end.
181
- * 1.9: Fixed parsing of not(x).
182
- * 1.9: Fixed parsing of op_asgn + rescue: 'a ||= b rescue nil'
183
- * 1.9: added \r to the EOL backslash handler. dos files blow
184
- * 1.9: hacked in a workaround for 1.9 specific regexps running in 1.8.
185
- * Added #reset to RubyParser proxy class
186
- * Fixed lexing of conditional w/ %() tokens
187
-
188
- === 3.0.0.a5 / 2012-07-31
189
-
190
- * 5 bug fixes:
191
-
192
- * 1.9: Fix construction of 'f(:x, y: nil,)' w/ trailing comma.
193
- * 1.9: cleaned up lexing exit lex_state handling. Fixes bug parsing 'if f :x; end'
194
- * 1.9: fixed building of right-leaning masgns: 'f { |a, (b, c)| }'
195
- * 1.9: fixed lexing 'when *splat'
196
- * 1.9: fixed lexing of regexps in whens
197
-
198
- === 3.0.0.a4 / 2012-07-26
199
-
200
- * 10 minor enhancements:
201
-
202
- * 'rake debug' defaults to 1.9 parser since that's all I'm doing these days
203
- * 1.9: Fixed f { |(a, b, ...), ...| ... } handling.
204
- * Added 'rake extract F=path' task to quickly extract errors from large files
205
- * Added on_error handler to provide more readable error message.
206
- * Aliased #process to #parse.
207
- * Renamed #parse to #process (legacy name), added default path of '(string)'
208
- * cleaned ruby_parse_extract_error output and fixed to 1.9 parser
209
- * ruby_parse_extract_error expands shell globs from ARGV
210
- * ruby_parse_extract_error should also capture RuntimeError
211
- * yyerror(msg) now warns with the message instead of ignoring it.
212
-
213
- * 3 bug fixes:
214
-
215
- * 1.9: Fixed bug lexing/parsing [ in rhs.
216
- * 1.9: Fixed f { |((a, b), c)| ... } handling
217
- * 1.9: fixed newline handling during expr_value
218
-
219
- === 3.0.0.a3 / 2012-07-03
220
-
221
- * 1 major enhancement:
222
-
223
- * OMG! Implemented all the 1.9 arg crap and I went from 500 lines of
224
- structural diff to 32!
225
-
226
- * 17 minor enhancements:
227
-
228
- * 1.9: !(...) is now a method call. ugh
229
- * 1.9: Added __ENCODING__ keyword (returns Unsupported atm).
230
- * 1.9: Added support for "a.()" thingy. whatever you call it. Have I ever mentioned that ruby has too much syntax? I mean really...
231
- * 1.9: Moved kRETURN/kBREAK/kNEXT from command_call to command
232
- * 1.9: Removed when_args and refactored into args production.
233
- * 1.9: Support for not/! being a call to #!. why matz? why?!?
234
- * 1.9: Support for trailing comma support in opt call args.
235
- * 1.9: Switched keyword support to deal with 1.8 vs 1.9 differences.
236
- * 1.9: refactored and created command_asgn
237
- * 1.9: removed case/else from primary
238
- * 1.9: reworked mlhs and family. Now horrible things like 'a, *, c = f' work
239
- * 1.9: reworked top level rules from program to expr. Lots of lame refactorings in mri.
240
- * Moved 'a[]' from primary down to method_call
241
- * Removed 'args trailer' production from assoc_list (eg {1, 2}).
242
- * Removed 1.9 support for : as a terminator in do/then
243
- * RubyParser no longer subclasses the 18 parser, so I had to change some consts around.
244
- * Undeprecated RubyParser - but now it is a compound parser that tries 1.9 first.
245
-
246
- * 3 bug fixes:
247
-
248
- * 1.9: fixed bang method name.
249
- * Fixed case/when/splat handling on both 1.8 and 1.9.
250
- * Removed lambda_body production from lambda
251
-
252
- === 3.0.0.a2 / 2012-06-19
253
-
254
- * 1 minor enhancement:
255
-
256
- * Updated to sexp_processor ~> 4.0
257
-
258
- * 1 bug fix:
259
-
260
- * Fixed new_module to remove scope/block. Not enough tests on module variance.
261
-
262
- * 1 known issue:
263
-
264
- * No parsing of "a.()" thingy. (reported by julian7) (patches welcome!)
265
-
266
- === 3.0.0.a1 / 2012-05-22
267
-
268
- This is the first alpha release of the 3.0.0 series. It is probably
269
- woefully incomplete, bug ridden, and hasn't showered in several days.
270
- Please please please beat the crap out of it and send
271
- bugs/patches/complaints/suggestions.
272
-
273
- * 5 major enhancements:
274
-
275
- * 1.9 parsing! Thanks to EVERYONE for submitting patches for this!
276
- * Removed :arglist from everything but :op_asgn1
277
- * Removed :block from resbody
278
- * Removed :block from when
279
- * Removed :block nodes inside of scope nodes (defn/defs/class/sclass).
280
- * Removed :scope nodes in defn/defs/class/sclass nodes.
281
- * (probably more sexp cleanup to come before 3.0.0 final)
282
-
283
- * 25 minor enhancements:
284
-
285
- * 1.9: Fix \!a. (wanabe)
286
- * 1.9: Method calling with postargs. (wanabe)
287
- * 1.9: Method definition with postargs. (wanabe)
288
- * 1.9: Support lambda args without parentheses. (wanabe)
289
- * Added R arg to `rake debug` to debug ruby straight up
290
- * Added RubyParser, subclassing Ruby18Parser but warning on instantiation.
291
- * Added backref_assign_error (needs tests)
292
- * Added bin/ruby_parse_extract_error to help with error submissions
293
- * Added debug task to help quickly get into a bug
294
- * Added more 18 vs 19 lexing tests for ?c.
295
- * Added ruby_parser.rb that pulls everything together in proper order.
296
- * Added tLABEL. (brynary)
297
- * Branched ruby_parser.y to ruby18_parser.y
298
- * Fix to pass test_lambda_args_block__19 test. (mrmargolis)
299
- * Got rid of one instance of unread_many. (Confusion)
300
- * Moved everything from RubyParser to RubyParserStuff and included module in both.
301
- * Refactored 1.9 args handling
302
- * Refactored and added new_resbody to ruby_parser_extras.
303
- * Refactored and added new_when
304
- * Refactored tests infrastructure and added both 1.8 and 1.9 test branches.
305
- * Removed unused methods: unread, begin_of_line? was_begin_of_line. (YAY!) (Confusion)
306
- * Renamed ruby_parser.y to ruby19_parser.y
307
- * RubyLexer now takes a version specifier.
308
- * Started doing comparative refactoring between MRI's 1.9 parser and RP's. Shouldn't differ functionally except where we missed stuff in RP.
309
- * `rake debug` prints the output if it succeeds.
310
-
311
- * 21 bug fixes:
312
-
313
- * Added missing gvar arg error. (1.8)
314
- * Attach parser files to isolate to ensure they can build
315
- * Conditionalize handling of tLABEL to ruby19+. Fixes issue #33.
316
- * DOH. I deactivated some tests and never reactivated them. (Confusion ftw)
317
- * Duplicate the input so that heredoc processing doesn't morph original. (banister)
318
- * Entirely reworked block arg handling. (1.8)
319
- * Fix ?x char literal. (nobu)
320
- * Fixed 4/5 of literal lambda tests (jamie)
321
- * Fixed deps for parser
322
- * Fixed lexing of ?c for ruby 1.8 and 1.9.
323
- * Fixed more Ruby 1.9 args tests (brynary)
324
- * Fixed reswords to match MRI (1.8, 1.9)
325
- * Fixed symbols with no spaces in method calls (e.g. foo:bar) (YAY! brynary)
326
- * Fixed ternary_nil_no_space and other ternary edge cases for 1.9. (lastobelus)
327
- * Fixed test_call_not_equal__19. First bug bounty! (albus522)
328
- * Made lambda w/o arg list zero out the arg slot.
329
- * Renamed awords to qwords to match stupid MRI naming. (1.8, 1.9) :(
330
- * Rolled out brynary's symbols-no-spaces (foo:bar) changes when parsing 1.8 code
331
- * Split 1.8 from 1.9 open paren lexer. Gawd that's ugly code.
332
- * Split block_var from for_var. (1.8, 1.9)
333
- * Use binread (and emulate in ruby 1.8) to avoid encoding issues
334
-
335
- === 2.3.1 / 2011-09-21
336
-
337
- * 2 bug fixes:
338
-
339
- * Fixed line numbers at end of special var+whitespace (larsch)
340
- * Holy crap I was smokin' something good... Fixed 1.9.3 warning
341
-
342
- === 2.3.0 / 2011-09-06
343
-
344
- * 2 minor enhancements:
345
-
346
- * Add -g flag to parser compile if DEBUG
347
- * Lexer now embeds line number in yacc_value for keywords, helping fix up line numbers
348
-
349
- * 3 bug fixes:
350
-
351
- * Fix method line numbers when no args and no parens (quix)
352
- * Fixed line numbers on return/break/next w/ result expr. (pjnz)
353
- * Fixed some lexing state in order to parse: 'f (1), 2' as 'f(1, 2)'. (invernizzi)
354
-
355
- === 2.2.0 / 2011-08-23
356
-
357
- * 2 minor enhancements:
358
-
359
- * Moved Keyword, Environment, and StackState inside of RubyParser
360
- * Added proper dsym and dsym->sym support.
361
-
362
- * 3 bug fixes:
363
-
364
- * Added extra (failing) tests for call/iter line number checking (quix)
365
- * Fixed line numbers for certain call/iter edge cases
366
- * Fixed parsing of: alias :"<<" :">>".
367
-
368
- === 2.1.0 / 2011-08-15
369
-
370
- * 2 minor enhancements:
371
-
372
- * Added new accessor canonicalize_conditions to toggle conditional canonicalization (on by default). (confused)
373
- * Awesome cleanup: Replaced call to append_block by block_append. (Confusion)
374
-
375
- * 2 bug fixes:
376
-
377
- * Fixed handling last line of =begin/=end. (raybaxter)
378
- * Fixed source line numbers after heredocs. (jbarreneche)
379
-
380
- === 2.0.6 / 2011-02-18
381
-
382
- * 1 minor enhancement:
383
-
384
- * Switched to hoe's racc plugin to clean up rakefile and builds
385
-
386
- * 1 bug fix:
387
-
388
- * Fixed empty =begin/end.
389
-
390
- === 2.0.5 / 2010-09-01
391
-
392
- * 1 minor enhancement:
393
-
394
- * Started merging like lexical cases to try to squeeze some optimization out
395
-
396
- === 2.0.4 / 2009-08-18
397
-
398
- * 1 minor enhancement:
399
-
400
- * Changed requires around to be more accurate.
401
-
402
- * 4 bug fixes:
403
-
404
- * Fixed .autotest for minitest
405
- * Fixed emacs escape lexing bug: "\C-\\" (maglev/gemstone)
406
- * Fixed octal lexing edgecases. (maglev/gemstone)
407
- * Fixed regexp lexing edgecases. (maglev/gemstone)
408
-
409
- === 2.0.3 / 2009-06-23
410
-
411
- * 4 minor enhancements:
412
-
413
- * Removed dead code handling d/regex match node cruft.
414
- * Switched to minitest
415
- * Updated .autotest and rakefile wrt rcov for new hoe capabilities
416
- * Updated hoe for new capabilities
417
-
418
- * 4 bug fixes:
419
-
420
- * Environment#all now deals with strange edge cases in RAD.
421
- * Fixed packaging/compilation issue.
422
- * Minor 1.9 fixes
423
- * hoe -> flay -> rubyparser rakefile circularity fixed
424
-
425
- === 2.0.2 / 2009-01-20
426
-
427
- * 2 minor enhancements:
428
-
429
- * Added gauntlet_rubyparser plugin. YAY for easy massive bug-hunting.
430
- * Promoted Sexp's file/line/comments to sexp_processor.
431
-
432
- * 4 bug fixes:
433
-
434
- * Fixed and improved the readme
435
- * Fixed lexing heredoc newlines.
436
- * Fixed line numbers on defns.
437
- * Fixed rdoc generation bug pointed out by hugh sasse (who rocks)
438
-
439
- === 2.0.1 / 2008-11-04
440
-
441
- * 2 minor enhancements:
442
-
443
- * Updated for changes to splat node in many contexts.
444
- * Made PT a developer dep
445
-
446
- === 2.0.0 / 2008-10-22
447
-
448
- * 1 major enhancement
449
-
450
- * Brought on the AWESOME! 4x faster! no known lexing/parsing bugs!
451
-
452
- * 71 minor enhancements
453
-
454
- * 1.9: Added Fixnum#ord.
455
- * 1.9: Added missing Regexp constants and did it so it'd work on 1.9.
456
- * Added #store_comment and #comments
457
- * Added StringScanner #begin_of_line?
458
- * Added a bunch of tests for regexp escape chars, #parse_string, #read_escape, ? numbers, ? whitespace.
459
- * Added a hack for rubinius' r2l eval bug.
460
- * Added a new token type tSTRING that bypasses tSTRING_BEG/END entirely. Only does non-interpolated strings and then falls back to the old way. MUCH cleaner tho.
461
- * Added bin/ruby_parse
462
- * Added compare rule to Rakefile.
463
- * Added coverage files/dirs to clean rule.
464
- * Added file and line numbers to all sexp nodes. Column/ranges to come.
465
- * Added lex_state change for lvars at the end of yylex.
466
- * Added lexed comments to defn/defs/class/module nodes.
467
- * Added stats gathering for yylex. Reordered yylex for avg data
468
- * Added tSYMBOL token type and parser rule to speed up symbol lexing.
469
- * Added tally output for getch, unread, and unread_many.
470
- * Added tests for ambigous uminus/uplus, backtick in cmdarg, square and curly brackets, numeric gvars, eos edge cases, string quoting %<> and %%%.
471
- * All cases throughout yylex now return directly if they match, no passthroughs.
472
- * All lexer cases now slurp entire token in one swoop.
473
- * All zarrays are now just empty arrays.
474
- * Changed s(:block_arg, :blah) to :"&blah" in args sexp.
475
- * Cleaned up lexer error handling. Now just raises all over.
476
- * Cleaned up read_escape and regx_options
477
- * Cleaned up tokadd_string (for some definition of cleaned).
478
- * Converted single quoted strings to new tSTRING token type.
479
- * Coverage is currently 94.4% on lexer.
480
- * Done what I can to clean up heredoc lexing... still sucks.
481
- * Flattened resbodies in rescue node. Fixed .autotest file.
482
- * Folded lex_keywords back in now that it screams.
483
- * Found very last instanceof ILiteralNode in the code. haha!
484
- * Got the tests subclassing PTTC and cleaned up a lot. YAY
485
- * Handle yield(*ary) properly
486
- * MASSIVELY cleaned out =begin/=end comment processor.
487
- * Massive overhaul on Keyword class. All hail the mighty Hash!
488
- * Massively cleaned up ident= edge cases and fixed a stupid bug from jruby.
489
- * Merged @/@@ scanner together, going to try to do the same everywhere.
490
- * Refactored fix_arg_lex_state, common across the lexer.
491
- * Refactored new_fcall into new_call.
492
- * Refactored some code to get better profile numbers.
493
- * Refactored some more #fix_arg_lex_state.
494
- * Refactored tail of yylex into its own method.
495
- * Removed Module#kill
496
- * Removed Token, replaced with Sexp.
497
- * Removed all parse_number and parse_quote tests.
498
- * Removed argspush, argscat. YAY!
499
- * Removed as many token_buffer.split(//)'s as possible. 1 to go.
500
- * Removed begins from compstmts
501
- * Removed buffer arg for tokadd_string.
502
- * Removed crufty (?) solo '@' token... wtf was that anyhow?
503
- * Removed most jruby/stringio cruft from StringScanner.
504
- * Removed one unread_many... 2 to go. They're harder.
505
- * Removed store_comment, now done directly.
506
- * Removed token_buffer. Now I just use token ivar.
507
- * Removed use of s() from lexer. Changed the way line numbers are gathered.
508
- * Renamed *qwords to *awords.
509
- * Renamed StringScanner to RPStringScanner (a subclass) to fix namespace trashing.
510
- * Renamed parse to process and aliased to parse.
511
- * Renamed token_buffer to string_buffer since that arcane shit still needs it.
512
- * Resolved the rest of the lexing issues I brought up w/ ruby-core.
513
- * Revamped tokadd_escape.
514
- * Rewrote Keyword and KWtable.
515
- * Rewrote RubyLexer using StringScanner.
516
- * Rewrote tokadd_escape. 79 lines down to 21.
517
- * Split out lib/ruby_parser_extras.rb so lexer is standalone.
518
- * Started to clean up the parser and make it as skinny as possible
519
- * Stripped out as much code as possible.
520
- * Stripped yylex of some dead code.
521
- * Switched from StringIO to StringScanner.
522
- * Updated rakefile for new hoe.
523
- * Uses pure ruby racc if ENV['PURE_RUBY'], otherwise use c.
524
- * Wrote a ton of lexer tests. Coverage is as close to 100% as possible.
525
- * Wrote args to clean up the big nasty args processing grammar section.
526
- * lex_strterm is now a plain array, removed RubyLexer#s(...).
527
- * yield and super now flatten args.
528
-
529
- * 21 bug fixes:
530
-
531
- * I'm sure this list is missing a lot:
532
- * Fixed 2 bugs both involving attrasgn (and ilk) esp when lhs is an array.
533
- * Fixed a bug in the lexer for strings with single digit hex escapes.
534
- * Fixed a bug parsing: a (args) { expr }... the space caused a different route to be followed and all hell broke loose.
535
- * Fixed a bug with x\n=beginvar not putting begin back.
536
- * Fixed attrasgn to have arglists, not arrays.
537
- * Fixed bug in defn/defs with block fixing.
538
- * Fixed class/module's name slot if colon2/3.
539
- * Fixed dstr with empty interpolation body.
540
- * Fixed for 1.9 string/char changes.
541
- * Fixed lexer BS wrt determining token type of words.
542
- * Fixed lexer BS wrt pass through values and lexing words. SO STUPID.
543
- * Fixed lexing of floats.
544
- * Fixed lexing of identifiers followed by equals. I hope.
545
- * Fixed masgn with splat on lhs
546
- * Fixed new_super to deal with block_pass correctly.
547
- * Fixed parser's treatment of :colon2 and :colon3.
548
- * Fixed regexp scanning of escaped numbers, ANY number is valid, not just octs.
549
- * Fixed string scanning of escaped octs, allowing 1-3 chars.
550
- * Fixed unescape for \n
551
- * Fixed: omg this is stupid. '()' was returning bare nil
552
- * Fixed: remove_begin now goes to the end, not sure why it didn't before.
553
-
554
- === 1.0.0 / 2007-12-20
555
-
556
- * 1 major enhancement
557
- * Birthday!
558
-