treetop 1.4.10 → 1.4.11

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -9,10 +9,10 @@ require File.expand_path("../lib/treetop/version", __FILE__)
9
9
  Jeweler::Tasks.new do |gem|
10
10
  gem.name = "treetop"
11
11
  gem.version = Treetop::VERSION::STRING
12
- gem.author = "Nathan Sobo"
12
+ gem.author = ["Nathan Sobo", "Clifford Heath"]
13
13
  gem.license = "MIT"
14
14
  gem.email = "cliffordheath@gmail.com"
15
- gem.homepage = "http://functionalform.blogspot.com"
15
+ gem.homepage = "https://github.com/cjheath/treetop"
16
16
  gem.platform = Gem::Platform::RUBY
17
17
  gem.summary = "A Ruby-based text parsing and interpretation DSL"
18
18
  gem.files = ["LICENSE", "README.md", "Rakefile", "treetop.gemspec", "{spec,lib,bin,doc,examples}/**/*"].map{|p| Dir[p]}.flatten
@@ -14,10 +14,10 @@ Here are a few interesting problems I've encountered. I figure sharing them may
14
14
  ##Matching a String
15
15
 
16
16
  rule string
17
- '"' (!'"' . / '\"')* '"'
17
+ '"' ('\"' / !'"' .)* '"'
18
18
  end
19
19
 
20
- This expression says: Match a quote, then zero or more of any character but a quote or an escaped quote followed by a quote. Lookahead assertions are essential for these types of problems.
20
+ This expression says: Match a quote, then zero or more of, an escaped quote or any character but a quote, followed by a quote. Lookahead assertions are essential for these types of problems.
21
21
 
22
22
  ##Matching Nested Structures With Non-Unique Delimeters
23
23
  Say I want to parse a diabolical wiki syntax in which the following interpretations apply.
@@ -48,4 +48,4 @@ This says that `'end'` must be followed by a space, but this space is not consum
48
48
  'end' !(!' ' .)
49
49
  end
50
50
 
51
- In general, when the syntax gets tough, it helps to focus on what you really mean. A keyword is a character not followed by another character that isn't a space.
51
+ In general, when the syntax gets tough, it helps to focus on what you really mean. A keyword is a character not followed by another character that isn't a space.
@@ -25,11 +25,11 @@ end
25
25
  <h2>Matching a String</h2>
26
26
 
27
27
  <pre><code>rule string
28
- '"' (!'"' . / '\"')* '"'
28
+ '"' ('\"' / !'"' .)* '"'
29
29
  end
30
30
  </code></pre>
31
31
 
32
- <p>This expression says: Match a quote, then zero or more of any character but a quote or an escaped quote followed by a quote. Lookahead assertions are essential for these types of problems.</p>
32
+ <p>This expression says: Match a quote, then zero or more of, an escaped quote or any character but a quote, followed by a quote. Lookahead assertions are essential for these types of problems.</p>
33
33
 
34
34
  <h2>Matching Nested Structures With Non-Unique Delimeters</h2>
35
35
 
@@ -2736,44 +2736,49 @@ module Treetop
2736
2736
  if r7
2737
2737
  r6 = r7
2738
2738
  else
2739
- i10, s10 = index, []
2740
- i11 = index
2741
- if has_terminal?('\\', false, index)
2742
- r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
2743
- @index += 1
2744
- else
2745
- terminal_parse_failure('\\')
2746
- r12 = nil
2747
- end
2748
- if r12
2749
- r11 = nil
2739
+ r10 = _nt_bracket_expression
2740
+ if r10
2741
+ r6 = r10
2750
2742
  else
2751
- @index = i11
2752
- r11 = instantiate_node(SyntaxNode,input, index...index)
2753
- end
2754
- s10 << r11
2755
- if r11
2756
- if index < input_length
2743
+ i11, s11 = index, []
2744
+ i12 = index
2745
+ if has_terminal?('\\', false, index)
2757
2746
  r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
2758
2747
  @index += 1
2759
2748
  else
2760
- terminal_parse_failure("any character")
2749
+ terminal_parse_failure('\\')
2761
2750
  r13 = nil
2762
2751
  end
2763
- s10 << r13
2764
- end
2765
- if s10.last
2766
- r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
2767
- r10.extend(CharacterClass1)
2768
- else
2769
- @index = i10
2770
- r10 = nil
2771
- end
2772
- if r10
2773
- r6 = r10
2774
- else
2775
- @index = i6
2776
- r6 = nil
2752
+ if r13
2753
+ r12 = nil
2754
+ else
2755
+ @index = i12
2756
+ r12 = instantiate_node(SyntaxNode,input, index...index)
2757
+ end
2758
+ s11 << r12
2759
+ if r12
2760
+ if index < input_length
2761
+ r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
2762
+ @index += 1
2763
+ else
2764
+ terminal_parse_failure("any character")
2765
+ r14 = nil
2766
+ end
2767
+ s11 << r14
2768
+ end
2769
+ if s11.last
2770
+ r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
2771
+ r11.extend(CharacterClass1)
2772
+ else
2773
+ @index = i11
2774
+ r11 = nil
2775
+ end
2776
+ if r11
2777
+ r6 = r11
2778
+ else
2779
+ @index = i6
2780
+ r6 = nil
2781
+ end
2777
2782
  end
2778
2783
  end
2779
2784
  s3 << r6
@@ -2800,13 +2805,13 @@ module Treetop
2800
2805
  s0 << r2
2801
2806
  if r2
2802
2807
  if has_terminal?(']', false, index)
2803
- r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
2808
+ r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
2804
2809
  @index += 1
2805
2810
  else
2806
2811
  terminal_parse_failure(']')
2807
- r14 = nil
2812
+ r15 = nil
2808
2813
  end
2809
- s0 << r14
2814
+ s0 << r15
2810
2815
  end
2811
2816
  end
2812
2817
  if s0.last
@@ -2823,6 +2828,216 @@ module Treetop
2823
2828
  r0
2824
2829
  end
2825
2830
 
2831
+ module BracketExpression0
2832
+ end
2833
+
2834
+ def _nt_bracket_expression
2835
+ start_index = index
2836
+ if node_cache[:bracket_expression].has_key?(index)
2837
+ cached = node_cache[:bracket_expression][index]
2838
+ if cached
2839
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2840
+ @index = cached.interval.end
2841
+ end
2842
+ return cached
2843
+ end
2844
+
2845
+ i0, s0 = index, []
2846
+ if has_terminal?('[:', false, index)
2847
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 2))
2848
+ @index += 2
2849
+ else
2850
+ terminal_parse_failure('[:')
2851
+ r1 = nil
2852
+ end
2853
+ s0 << r1
2854
+ if r1
2855
+ if has_terminal?('^', false, index)
2856
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
2857
+ @index += 1
2858
+ else
2859
+ terminal_parse_failure('^')
2860
+ r3 = nil
2861
+ end
2862
+ if r3
2863
+ r2 = r3
2864
+ else
2865
+ r2 = instantiate_node(SyntaxNode,input, index...index)
2866
+ end
2867
+ s0 << r2
2868
+ if r2
2869
+ i4 = index
2870
+ if has_terminal?('alnum', false, index)
2871
+ r5 = instantiate_node(SyntaxNode,input, index...(index + 5))
2872
+ @index += 5
2873
+ else
2874
+ terminal_parse_failure('alnum')
2875
+ r5 = nil
2876
+ end
2877
+ if r5
2878
+ r4 = r5
2879
+ else
2880
+ if has_terminal?('alpha', false, index)
2881
+ r6 = instantiate_node(SyntaxNode,input, index...(index + 5))
2882
+ @index += 5
2883
+ else
2884
+ terminal_parse_failure('alpha')
2885
+ r6 = nil
2886
+ end
2887
+ if r6
2888
+ r4 = r6
2889
+ else
2890
+ if has_terminal?('blank', false, index)
2891
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 5))
2892
+ @index += 5
2893
+ else
2894
+ terminal_parse_failure('blank')
2895
+ r7 = nil
2896
+ end
2897
+ if r7
2898
+ r4 = r7
2899
+ else
2900
+ if has_terminal?('cntrl', false, index)
2901
+ r8 = instantiate_node(SyntaxNode,input, index...(index + 5))
2902
+ @index += 5
2903
+ else
2904
+ terminal_parse_failure('cntrl')
2905
+ r8 = nil
2906
+ end
2907
+ if r8
2908
+ r4 = r8
2909
+ else
2910
+ if has_terminal?('digit', false, index)
2911
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 5))
2912
+ @index += 5
2913
+ else
2914
+ terminal_parse_failure('digit')
2915
+ r9 = nil
2916
+ end
2917
+ if r9
2918
+ r4 = r9
2919
+ else
2920
+ if has_terminal?('graph', false, index)
2921
+ r10 = instantiate_node(SyntaxNode,input, index...(index + 5))
2922
+ @index += 5
2923
+ else
2924
+ terminal_parse_failure('graph')
2925
+ r10 = nil
2926
+ end
2927
+ if r10
2928
+ r4 = r10
2929
+ else
2930
+ if has_terminal?('lower', false, index)
2931
+ r11 = instantiate_node(SyntaxNode,input, index...(index + 5))
2932
+ @index += 5
2933
+ else
2934
+ terminal_parse_failure('lower')
2935
+ r11 = nil
2936
+ end
2937
+ if r11
2938
+ r4 = r11
2939
+ else
2940
+ if has_terminal?('print', false, index)
2941
+ r12 = instantiate_node(SyntaxNode,input, index...(index + 5))
2942
+ @index += 5
2943
+ else
2944
+ terminal_parse_failure('print')
2945
+ r12 = nil
2946
+ end
2947
+ if r12
2948
+ r4 = r12
2949
+ else
2950
+ if has_terminal?('punct', false, index)
2951
+ r13 = instantiate_node(SyntaxNode,input, index...(index + 5))
2952
+ @index += 5
2953
+ else
2954
+ terminal_parse_failure('punct')
2955
+ r13 = nil
2956
+ end
2957
+ if r13
2958
+ r4 = r13
2959
+ else
2960
+ if has_terminal?('space', false, index)
2961
+ r14 = instantiate_node(SyntaxNode,input, index...(index + 5))
2962
+ @index += 5
2963
+ else
2964
+ terminal_parse_failure('space')
2965
+ r14 = nil
2966
+ end
2967
+ if r14
2968
+ r4 = r14
2969
+ else
2970
+ if has_terminal?('upper', false, index)
2971
+ r15 = instantiate_node(SyntaxNode,input, index...(index + 5))
2972
+ @index += 5
2973
+ else
2974
+ terminal_parse_failure('upper')
2975
+ r15 = nil
2976
+ end
2977
+ if r15
2978
+ r4 = r15
2979
+ else
2980
+ if has_terminal?('xdigit', false, index)
2981
+ r16 = instantiate_node(SyntaxNode,input, index...(index + 6))
2982
+ @index += 6
2983
+ else
2984
+ terminal_parse_failure('xdigit')
2985
+ r16 = nil
2986
+ end
2987
+ if r16
2988
+ r4 = r16
2989
+ else
2990
+ if has_terminal?('word', false, index)
2991
+ r17 = instantiate_node(SyntaxNode,input, index...(index + 4))
2992
+ @index += 4
2993
+ else
2994
+ terminal_parse_failure('word')
2995
+ r17 = nil
2996
+ end
2997
+ if r17
2998
+ r4 = r17
2999
+ else
3000
+ @index = i4
3001
+ r4 = nil
3002
+ end
3003
+ end
3004
+ end
3005
+ end
3006
+ end
3007
+ end
3008
+ end
3009
+ end
3010
+ end
3011
+ end
3012
+ end
3013
+ end
3014
+ end
3015
+ s0 << r4
3016
+ if r4
3017
+ if has_terminal?(':]', false, index)
3018
+ r18 = instantiate_node(SyntaxNode,input, index...(index + 2))
3019
+ @index += 2
3020
+ else
3021
+ terminal_parse_failure(':]')
3022
+ r18 = nil
3023
+ end
3024
+ s0 << r18
3025
+ end
3026
+ end
3027
+ end
3028
+ if s0.last
3029
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3030
+ r0.extend(BracketExpression0)
3031
+ else
3032
+ @index = i0
3033
+ r0 = nil
3034
+ end
3035
+
3036
+ node_cache[:bracket_expression][start_index] = r0
3037
+
3038
+ r0
3039
+ end
3040
+
2826
3041
  def _nt_anything_symbol
2827
3042
  start_index = index
2828
3043
  if node_cache[:anything_symbol].has_key?(index)
@@ -357,13 +357,20 @@ module Treetop
357
357
  end
358
358
 
359
359
  rule character_class
360
- '[' characters:(!']' ('\\' . /!'\\' .))+ ']' <CharacterClass> {
360
+ '[' characters:(!']' ('\\' . / bracket_expression / !'\\' .))+ ']' <CharacterClass> {
361
361
  def characters
362
362
  super.text_value
363
363
  end
364
364
  }
365
365
  end
366
366
 
367
+ rule bracket_expression
368
+ '[:' '^'? (
369
+ 'alnum' / 'alpha' / 'blank' / 'cntrl' / 'digit' / 'graph' / 'lower' /
370
+ 'print' / 'punct' / 'space' / 'upper' / 'xdigit' / 'word'
371
+ ) ':]'
372
+ end
373
+
367
374
  rule anything_symbol
368
375
  '.' <AnythingSymbol>
369
376
  end
@@ -50,7 +50,7 @@ module Treetop
50
50
  @sequence_elements = sequence_elements
51
51
  end
52
52
 
53
- def compile(index, builder, rule)
53
+ def compile(idx, builder, rule)
54
54
  super
55
55
  builder.module_declaration(module_name) do
56
56
  elements_by_name = sequence_elements.inject({}){|h,e| (h[e.label_name.to_s] ||= []) << e; h}
@@ -2,7 +2,7 @@ module Treetop #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 1
4
4
  MINOR = 4
5
- TINY = 10
5
+ TINY = 11
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -69,7 +69,32 @@ module CharacterClassSpec
69
69
  parse(' 1', :index => 1).should be_nil
70
70
  end
71
71
  end
72
-
72
+
73
+ describe "a character class with a POSIX bracket expression" do
74
+ testing_expression "[[:digit:]]"
75
+ it "matches a single character within the class" do
76
+ parse('1').should_not be_nil
77
+ end
78
+ it "does not match a single character outside the class" do
79
+ parse('a').should be_nil
80
+ parse('-').should be_nil
81
+ end
82
+ testing_expression "[[:digit:][:space:]]+"
83
+ it "matches a string with a mix of two character classes" do
84
+ parse('1 4 9').should_not be_nil
85
+ end
86
+ end
87
+
88
+ describe "a character class with a negated POSIX bracket expression" do
89
+ testing_expression "[[:^space:]]"
90
+ it "matches a character outside the negated class" do
91
+ parse('a').should_not be_nil
92
+ end
93
+ it "doesn't match a character within the negated class" do
94
+ parse(' ').should be_nil
95
+ end
96
+ end
97
+
73
98
  describe "a character class followed by a node class declaration and a block" do
74
99
 
75
100
  testing_expression "[A-Z] <CharacterClassSpec::Foo>"
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'benchmark'
3
3
  require 'rspec'
4
+ require 'rspec/core/shared_context'
4
5
  require 'polyglot'
5
6
 
6
7
  $LOAD_PATH.unshift File.expand_path('../../lib')
data/treetop.gemspec CHANGED
@@ -4,15 +4,15 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{treetop}
8
- s.version = "1.4.10"
7
+ s.name = "treetop"
8
+ s.version = "1.4.11"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Nathan Sobo}]
12
- s.autorequire = %q{treetop}
13
- s.date = %q{2011-07-27}
14
- s.email = %q{cliffordheath@gmail.com}
15
- s.executables = [%q{tt}]
11
+ s.authors = ["Nathan Sobo", "Clifford Heath"]
12
+ s.autorequire = "treetop"
13
+ s.date = "2012-10-10"
14
+ s.email = "cliffordheath@gmail.com"
15
+ s.executables = ["tt"]
16
16
  s.extra_rdoc_files = [
17
17
  "LICENSE",
18
18
  "README.md"
@@ -144,11 +144,11 @@ Gem::Specification.new do |s|
144
144
  "spec/spec_helper.rb",
145
145
  "treetop.gemspec"
146
146
  ]
147
- s.homepage = %q{http://functionalform.blogspot.com}
148
- s.licenses = [%q{MIT}]
149
- s.require_paths = [%q{lib}]
150
- s.rubygems_version = %q{1.8.5}
151
- s.summary = %q{A Ruby-based text parsing and interpretation DSL}
147
+ s.homepage = "https://github.com/cjheath/treetop"
148
+ s.licenses = ["MIT"]
149
+ s.require_paths = ["lib"]
150
+ s.rubygems_version = "1.8.24"
151
+ s.summary = "A Ruby-based text parsing and interpretation DSL"
152
152
 
153
153
  if s.respond_to? :specification_version then
154
154
  s.specification_version = 3
@@ -158,7 +158,7 @@ Gem::Specification.new do |s|
158
158
  s.add_development_dependency(%q<jeweler>, [">= 0"])
159
159
  s.add_development_dependency(%q<activesupport>, [">= 0"])
160
160
  s.add_development_dependency(%q<i18n>, ["~> 0.5.0"])
161
- s.add_development_dependency(%q<rr>, ["~> 0.10.2"])
161
+ s.add_development_dependency(%q<rr>, ["~> 1.0"])
162
162
  s.add_development_dependency(%q<rspec>, [">= 2.0.0"])
163
163
  s.add_development_dependency(%q<rake>, [">= 0"])
164
164
  s.add_runtime_dependency(%q<polyglot>, [">= 0.3.1"])
@@ -167,7 +167,7 @@ Gem::Specification.new do |s|
167
167
  s.add_dependency(%q<jeweler>, [">= 0"])
168
168
  s.add_dependency(%q<activesupport>, [">= 0"])
169
169
  s.add_dependency(%q<i18n>, ["~> 0.5.0"])
170
- s.add_dependency(%q<rr>, ["~> 0.10.2"])
170
+ s.add_dependency(%q<rr>, ["~> 1.0"])
171
171
  s.add_dependency(%q<rspec>, [">= 2.0.0"])
172
172
  s.add_dependency(%q<rake>, [">= 0"])
173
173
  s.add_dependency(%q<polyglot>, [">= 0.3.1"])
@@ -177,7 +177,7 @@ Gem::Specification.new do |s|
177
177
  s.add_dependency(%q<jeweler>, [">= 0"])
178
178
  s.add_dependency(%q<activesupport>, [">= 0"])
179
179
  s.add_dependency(%q<i18n>, ["~> 0.5.0"])
180
- s.add_dependency(%q<rr>, ["~> 0.10.2"])
180
+ s.add_dependency(%q<rr>, ["~> 1.0"])
181
181
  s.add_dependency(%q<rspec>, [">= 2.0.0"])
182
182
  s.add_dependency(%q<rake>, [">= 0"])
183
183
  s.add_dependency(%q<polyglot>, [">= 0.3.1"])
metadata CHANGED
@@ -1,152 +1,154 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: treetop
3
- version: !ruby/object:Gem::Version
4
- hash: 19
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.4.11
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 4
9
- - 10
10
- version: 1.4.10
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Nathan Sobo
9
+ - Clifford Heath
14
10
  autorequire: treetop
15
11
  bindir: bin
16
12
  cert_chain: []
17
-
18
- date: 2011-07-27 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- version_requirements: &id001 !ruby/object:Gem::Requirement
22
- none: false
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- hash: 3
27
- segments:
28
- - 0
29
- version: "0"
30
- prerelease: false
31
- type: :runtime
32
- requirement: *id001
13
+ date: 2012-10-10 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
33
16
  name: polyglot
34
- - !ruby/object:Gem::Dependency
35
- version_requirements: &id002 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
36
18
  none: false
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- hash: 3
41
- segments:
42
- - 0
43
- version: "0"
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
44
24
  prerelease: false
45
- type: :development
46
- requirement: *id002
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
47
32
  name: jeweler
48
- - !ruby/object:Gem::Dependency
49
- version_requirements: &id003 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
50
34
  none: false
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- hash: 3
55
- segments:
56
- - 0
57
- version: "0"
58
- prerelease: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
59
39
  type: :development
60
- requirement: *id003
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
61
48
  name: activesupport
62
- - !ruby/object:Gem::Dependency
63
- version_requirements: &id004 !ruby/object:Gem::Requirement
49
+ requirement: !ruby/object:Gem::Requirement
64
50
  none: false
65
- requirements:
66
- - - ~>
67
- - !ruby/object:Gem::Version
68
- hash: 11
69
- segments:
70
- - 0
71
- - 5
72
- - 0
73
- version: 0.5.0
74
- prerelease: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
75
55
  type: :development
76
- requirement: *id004
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
77
64
  name: i18n
78
- - !ruby/object:Gem::Dependency
79
- version_requirements: &id005 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
80
66
  none: false
81
- requirements:
67
+ requirements:
82
68
  - - ~>
83
- - !ruby/object:Gem::Version
84
- hash: 51
85
- segments:
86
- - 0
87
- - 10
88
- - 2
89
- version: 0.10.2
90
- prerelease: false
69
+ - !ruby/object:Gem::Version
70
+ version: 0.5.0
91
71
  type: :development
92
- requirement: *id005
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: 0.5.0
79
+ - !ruby/object:Gem::Dependency
93
80
  name: rr
94
- - !ruby/object:Gem::Dependency
95
- version_requirements: &id006 !ruby/object:Gem::Requirement
81
+ requirement: !ruby/object:Gem::Requirement
96
82
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- hash: 15
101
- segments:
102
- - 2
103
- - 0
104
- - 0
105
- version: 2.0.0
106
- prerelease: false
83
+ requirements:
84
+ - - ~>
85
+ - !ruby/object:Gem::Version
86
+ version: '1.0'
107
87
  type: :development
108
- requirement: *id006
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ version: '1.0'
95
+ - !ruby/object:Gem::Dependency
109
96
  name: rspec
110
- - !ruby/object:Gem::Dependency
111
- version_requirements: &id007 !ruby/object:Gem::Requirement
97
+ requirement: !ruby/object:Gem::Requirement
112
98
  none: false
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- hash: 3
117
- segments:
118
- - 0
119
- version: "0"
120
- prerelease: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: 2.0.0
121
103
  type: :development
122
- requirement: *id007
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: 2.0.0
111
+ - !ruby/object:Gem::Dependency
123
112
  name: rake
124
- - !ruby/object:Gem::Dependency
125
- version_requirements: &id008 !ruby/object:Gem::Requirement
113
+ requirement: !ruby/object:Gem::Requirement
126
114
  none: false
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- hash: 17
131
- segments:
132
- - 0
133
- - 3
134
- - 1
135
- version: 0.3.1
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
136
120
  prerelease: false
137
- type: :runtime
138
- requirement: *id008
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
139
128
  name: polyglot
129
+ requirement: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: 0.3.1
135
+ type: :runtime
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: 0.3.1
140
143
  description:
141
144
  email: cliffordheath@gmail.com
142
- executables:
145
+ executables:
143
146
  - tt
144
147
  extensions: []
145
-
146
- extra_rdoc_files:
148
+ extra_rdoc_files:
147
149
  - LICENSE
148
150
  - README.md
149
- files:
151
+ files:
150
152
  - LICENSE
151
153
  - README.md
152
154
  - Rakefile
@@ -272,38 +274,32 @@ files:
272
274
  - spec/runtime/syntax_node_spec.rb
273
275
  - spec/spec_helper.rb
274
276
  - treetop.gemspec
275
- homepage: http://functionalform.blogspot.com
276
- licenses:
277
+ homepage: https://github.com/cjheath/treetop
278
+ licenses:
277
279
  - MIT
278
280
  post_install_message:
279
281
  rdoc_options: []
280
-
281
- require_paths:
282
+ require_paths:
282
283
  - lib
283
- required_ruby_version: !ruby/object:Gem::Requirement
284
+ required_ruby_version: !ruby/object:Gem::Requirement
284
285
  none: false
285
- requirements:
286
- - - ">="
287
- - !ruby/object:Gem::Version
288
- hash: 3
289
- segments:
286
+ requirements:
287
+ - - ! '>='
288
+ - !ruby/object:Gem::Version
289
+ version: '0'
290
+ segments:
290
291
  - 0
291
- version: "0"
292
- required_rubygems_version: !ruby/object:Gem::Requirement
292
+ hash: 3986202927641610227
293
+ required_rubygems_version: !ruby/object:Gem::Requirement
293
294
  none: false
294
- requirements:
295
- - - ">="
296
- - !ruby/object:Gem::Version
297
- hash: 3
298
- segments:
299
- - 0
300
- version: "0"
295
+ requirements:
296
+ - - ! '>='
297
+ - !ruby/object:Gem::Version
298
+ version: '0'
301
299
  requirements: []
302
-
303
300
  rubyforge_project:
304
- rubygems_version: 1.8.5
301
+ rubygems_version: 1.8.24
305
302
  signing_key:
306
303
  specification_version: 3
307
304
  summary: A Ruby-based text parsing and interpretation DSL
308
305
  test_files: []
309
-