treetop 1.4.10 → 1.4.11

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/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
-