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 +2 -2
- data/doc/pitfalls_and_advanced_techniques.markdown +3 -3
- data/doc/site/pitfalls_and_advanced_techniques.html +2 -2
- data/lib/treetop/compiler/metagrammar.rb +250 -35
- data/lib/treetop/compiler/metagrammar.treetop +8 -1
- data/lib/treetop/compiler/node_classes/sequence.rb +1 -1
- data/lib/treetop/version.rb +1 -1
- data/spec/compiler/character_class_spec.rb +26 -1
- data/spec/spec_helper.rb +1 -0
- data/treetop.gemspec +15 -15
- metadata +131 -135
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 = "
|
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
|
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
|
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
|
-
|
2740
|
-
|
2741
|
-
|
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
|
-
|
2752
|
-
|
2753
|
-
|
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(
|
2749
|
+
terminal_parse_failure('\\')
|
2761
2750
|
r13 = nil
|
2762
2751
|
end
|
2763
|
-
|
2764
|
-
|
2765
|
-
|
2766
|
-
|
2767
|
-
|
2768
|
-
|
2769
|
-
|
2770
|
-
|
2771
|
-
|
2772
|
-
|
2773
|
-
|
2774
|
-
|
2775
|
-
|
2776
|
-
|
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
|
-
|
2808
|
+
r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2804
2809
|
@index += 1
|
2805
2810
|
else
|
2806
2811
|
terminal_parse_failure(']')
|
2807
|
-
|
2812
|
+
r15 = nil
|
2808
2813
|
end
|
2809
|
-
s0 <<
|
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:(!']' ('\\' .
|
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(
|
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}
|
data/lib/treetop/version.rb
CHANGED
@@ -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
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 =
|
8
|
-
s.version = "1.4.
|
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 = [
|
12
|
-
s.autorequire =
|
13
|
-
s.date =
|
14
|
-
s.email =
|
15
|
-
s.executables = [
|
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 =
|
148
|
-
s.licenses = [
|
149
|
-
s.require_paths = [
|
150
|
-
s.rubygems_version =
|
151
|
-
s.summary =
|
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
|
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
|
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
|
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
|
-
|
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
|
-
|
19
|
-
|
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
|
-
|
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
|
-
|
41
|
-
|
42
|
-
- 0
|
43
|
-
version: "0"
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :runtime
|
44
24
|
prerelease: false
|
45
|
-
|
46
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
131
|
-
|
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
|
-
|
138
|
-
|
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:
|
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
|
-
|
289
|
-
segments:
|
286
|
+
requirements:
|
287
|
+
- - ! '>='
|
288
|
+
- !ruby/object:Gem::Version
|
289
|
+
version: '0'
|
290
|
+
segments:
|
290
291
|
- 0
|
291
|
-
|
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
|
-
|
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.
|
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
|
-
|