antlr3 1.4.0 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +59 -66
- data/java/RubyTarget.java +10 -5
- data/java/antlr-full-3.2.1.jar +0 -0
- data/lib/antlr3/debug.rb +8 -14
- data/lib/antlr3/debug/socket.rb +29 -29
- data/lib/antlr3/recognizers.rb +13 -23
- data/lib/antlr3/streams.rb +17 -8
- data/lib/antlr3/template.rb +11 -0
- data/lib/antlr3/template/group-lexer.rb +48 -48
- data/lib/antlr3/template/group-parser.rb +133 -94
- data/lib/antlr3/test/core-extensions.rb +1 -1
- data/lib/antlr3/token.rb +4 -4
- data/lib/antlr3/tree.rb +39 -35
- data/lib/antlr3/tree/debug.rb +3 -2
- data/lib/antlr3/version.rb +1 -1
- data/templates/Ruby.stg +27 -33
- data/templates/ST.stg +0 -3
- data/test/functional/ast-output/construction.rb +1 -1
- data/test/unit/test-exceptions.rb +12 -0
- metadata +4 -3
data/lib/antlr3/streams.rb
CHANGED
@@ -728,21 +728,30 @@ class CommonTokenStream
|
|
728
728
|
# token.name != 'WHITE_SPACE'
|
729
729
|
# end
|
730
730
|
#
|
731
|
-
def initialize(token_source, options = {})
|
732
|
-
|
731
|
+
def initialize( token_source, options = {} )
|
732
|
+
case token_source
|
733
|
+
when CommonTokenStream
|
734
|
+
# this is useful in cases where you want to convert a CommonTokenStream
|
735
|
+
# to a RewriteTokenStream or other variation of the standard token stream
|
736
|
+
stream = token_source
|
737
|
+
@token_source = stream.token_source
|
738
|
+
@channel = options.fetch( :channel ) { stream.channel or DEFAULT_CHANNEL }
|
739
|
+
@source_name = options.fetch( :source_name ) { stream.source_name }
|
740
|
+
tokens = stream.tokens.map { | t | t.dup }
|
741
|
+
else
|
742
|
+
@token_source = token_source
|
743
|
+
@channel = options.fetch( :channel, DEFAULT_CHANNEL )
|
744
|
+
@source_name = options.fetch( :source_name ) { @token_source.source_name rescue nil }
|
745
|
+
tokens = @token_source.to_a
|
746
|
+
end
|
733
747
|
@last_marker = nil
|
734
|
-
@
|
735
|
-
|
736
|
-
@tokens =
|
737
|
-
block_given? ? @token_source.select { |token| yield(token, self) } :
|
738
|
-
@token_source.to_a
|
748
|
+
@tokens = block_given? ? tokens.select { | t | yield( t, self ) } : tokens
|
739
749
|
@tokens.each_with_index { |t, i| t.index = i }
|
740
750
|
@position =
|
741
751
|
if first_token = @tokens.find { |t| t.channel == @channel }
|
742
752
|
@tokens.index(first_token)
|
743
753
|
else @tokens.length
|
744
754
|
end
|
745
|
-
@source_name = options.fetch(:source_name) { @token_source.source_name rescue nil }
|
746
755
|
end
|
747
756
|
|
748
757
|
#
|
data/lib/antlr3/template.rb
CHANGED
@@ -20,6 +20,11 @@ module Builder
|
|
20
20
|
super.push( :template )
|
21
21
|
end
|
22
22
|
|
23
|
+
def load_templates( group_file )
|
24
|
+
@template_library =
|
25
|
+
ANTLR3::Template::Group.load( group_file )
|
26
|
+
end
|
27
|
+
|
23
28
|
def define_template( name, source, &block )
|
24
29
|
template_library.define_template( name, source, &block )
|
25
30
|
end
|
@@ -91,6 +96,12 @@ class Group < Module
|
|
91
96
|
end
|
92
97
|
|
93
98
|
def self.load( group_file, options = {} )
|
99
|
+
unless( File.file?( group_file ) )
|
100
|
+
dir = $LOAD_PATH.find do | d |
|
101
|
+
File.file?( File.join( dir, group_file ) )
|
102
|
+
end or raise( LoadError, "no such template group file to load %s" % group_file )
|
103
|
+
group_file = File.join( dir, group_file )
|
104
|
+
end
|
94
105
|
namespace = options.fetch( :namespace, ::Object )
|
95
106
|
input = ANTLR3::FileStream.new( group_file, options )
|
96
107
|
lexer = Lexer.new( input, options )
|
@@ -3,9 +3,9 @@
|
|
3
3
|
# Group.g
|
4
4
|
#
|
5
5
|
# Generated using ANTLR version: 3.2.1-SNAPSHOT Dec 18, 2009 04:29:28
|
6
|
-
# Ruby runtime library version: 1.
|
6
|
+
# Ruby runtime library version: 1.5.0
|
7
7
|
# Input grammar file: Group.g
|
8
|
-
# Generated at: 2010-01-
|
8
|
+
# Generated at: 2010-01-27 10:24:01
|
9
9
|
#
|
10
10
|
|
11
11
|
# ~~~> start load path setup
|
@@ -16,7 +16,7 @@ antlr_load_failed = proc do
|
|
16
16
|
load_path = $LOAD_PATH.map { |dir| ' - ' << dir }.join( $/ )
|
17
17
|
raise LoadError, <<-END.strip!
|
18
18
|
|
19
|
-
Failed to load the ANTLR3 runtime library (version 1.
|
19
|
+
Failed to load the ANTLR3 runtime library (version 1.5.0):
|
20
20
|
|
21
21
|
Ensure the library has been installed on your system and is available
|
22
22
|
on the load path. If rubygems is available on your system, this can
|
@@ -30,7 +30,7 @@ Current load path:
|
|
30
30
|
END
|
31
31
|
end
|
32
32
|
|
33
|
-
defined?(ANTLR3) or begin
|
33
|
+
defined?( ANTLR3 ) or begin
|
34
34
|
|
35
35
|
# 1: try to load the ruby antlr3 runtime library from the system path
|
36
36
|
require 'antlr3'
|
@@ -38,7 +38,7 @@ defined?(ANTLR3) or begin
|
|
38
38
|
rescue LoadError
|
39
39
|
|
40
40
|
# 2: try to load rubygems if it isn't already loaded
|
41
|
-
defined?(Gem) or begin
|
41
|
+
defined?( Gem ) or begin
|
42
42
|
require 'rubygems'
|
43
43
|
rescue LoadError
|
44
44
|
antlr_load_failed.call
|
@@ -46,7 +46,7 @@ rescue LoadError
|
|
46
46
|
|
47
47
|
# 3: try to activate the antlr3 gem
|
48
48
|
begin
|
49
|
-
Gem.activate( 'antlr3', '
|
49
|
+
Gem.activate( 'antlr3', '~> 1.5.0' )
|
50
50
|
rescue Gem::LoadError
|
51
51
|
antlr_load_failed.call
|
52
52
|
end
|
@@ -75,10 +75,10 @@ class Group
|
|
75
75
|
module TokenData
|
76
76
|
|
77
77
|
# define the token constants
|
78
|
-
define_tokens(:ID => 5, :EOF => -1, :T__19 => 19, :WS => 9, :T__16 => 16,
|
79
|
-
|
80
|
-
|
81
|
-
|
78
|
+
define_tokens( :ID => 5, :EOF => -1, :T__19 => 19, :WS => 9, :T__16 => 16,
|
79
|
+
:T__15 => 15, :T__18 => 18, :T__17 => 17, :T__12 => 12,
|
80
|
+
:TEMPLATE => 6, :T__11 => 11, :T__14 => 14, :T__13 => 13,
|
81
|
+
:T__10 => 10, :CONSTANT => 4, :COMMENT => 8, :STRING => 7 )
|
82
82
|
|
83
83
|
end
|
84
84
|
|
@@ -88,7 +88,7 @@ class Group
|
|
88
88
|
include TokenData
|
89
89
|
|
90
90
|
begin
|
91
|
-
generated_using( "Group.g", "3.2.1-SNAPSHOT Dec 18, 2009 04:29:28", "1.
|
91
|
+
generated_using( "Group.g", "3.2.1-SNAPSHOT Dec 18, 2009 04:29:28", "1.5.0" )
|
92
92
|
rescue NoMethodError => error
|
93
93
|
error.name.to_sym == :generated_using or raise
|
94
94
|
end
|
@@ -358,10 +358,10 @@ class Group
|
|
358
358
|
|
359
359
|
|
360
360
|
# - - - - main rule block - - - -
|
361
|
-
# at line
|
361
|
+
# at line 127:5: 'A' .. 'Z' ( 'a' .. 'z' | '_' | 'A' .. 'Z' | '0' .. '9' )*
|
362
362
|
match_range(?A, ?Z)
|
363
|
-
# at line
|
364
|
-
|
363
|
+
# at line 127:14: ( 'a' .. 'z' | '_' | 'A' .. 'Z' | '0' .. '9' )*
|
364
|
+
while true # decision 1
|
365
365
|
alt_1 = 2
|
366
366
|
look_1_0 = @input.peek(1)
|
367
367
|
|
@@ -408,7 +408,7 @@ class Group
|
|
408
408
|
|
409
409
|
|
410
410
|
# - - - - main rule block - - - -
|
411
|
-
# at line
|
411
|
+
# at line 131:5: ( 'a' .. 'z' | '_' ) ( 'a' .. 'z' | '_' | 'A' .. 'Z' | '0' .. '9' )*
|
412
412
|
if @input.peek(1) == ?_ || @input.peek(1).between?(?a, ?z)
|
413
413
|
@input.consume
|
414
414
|
else
|
@@ -418,8 +418,8 @@ class Group
|
|
418
418
|
end
|
419
419
|
|
420
420
|
|
421
|
-
# at line
|
422
|
-
|
421
|
+
# at line 132:5: ( 'a' .. 'z' | '_' | 'A' .. 'Z' | '0' .. '9' )*
|
422
|
+
while true # decision 2
|
423
423
|
alt_2 = 2
|
424
424
|
look_2_0 = @input.peek(1)
|
425
425
|
|
@@ -466,10 +466,10 @@ class Group
|
|
466
466
|
|
467
467
|
|
468
468
|
# - - - - main rule block - - - -
|
469
|
-
# at line
|
469
|
+
# at line 136:5: '<<<' ( options {greedy=false; } : '\\\\' . | . )* '>>>'
|
470
470
|
match("<<<")
|
471
|
-
# at line
|
472
|
-
|
471
|
+
# at line 137:5: ( options {greedy=false; } : '\\\\' . | . )*
|
472
|
+
while true # decision 3
|
473
473
|
alt_3 = 3
|
474
474
|
look_3_0 = @input.peek(1)
|
475
475
|
|
@@ -506,12 +506,12 @@ class Group
|
|
506
506
|
end
|
507
507
|
case alt_3
|
508
508
|
when 1
|
509
|
-
# at line
|
509
|
+
# at line 137:35: '\\\\' .
|
510
510
|
match(?\\)
|
511
511
|
match_any
|
512
512
|
|
513
513
|
when 2
|
514
|
-
# at line
|
514
|
+
# at line 137:44: .
|
515
515
|
match_any
|
516
516
|
|
517
517
|
else
|
@@ -541,7 +541,7 @@ class Group
|
|
541
541
|
|
542
542
|
|
543
543
|
# - - - - main rule block - - - -
|
544
|
-
# at line
|
544
|
+
# at line 142:3: ( '\"' (~ ( '\\\\' | '\"' ) | '\\\\' . )* '\"' | '\\'' (~ ( '\\\\' | '\\'' ) | '\\\\' . )* '\\'' )
|
545
545
|
alt_6 = 2
|
546
546
|
look_6_0 = @input.peek(1)
|
547
547
|
|
@@ -555,10 +555,10 @@ class Group
|
|
555
555
|
end
|
556
556
|
case alt_6
|
557
557
|
when 1
|
558
|
-
# at line
|
558
|
+
# at line 142:5: '\"' (~ ( '\\\\' | '\"' ) | '\\\\' . )* '\"'
|
559
559
|
match(?")
|
560
|
-
# at line
|
561
|
-
|
560
|
+
# at line 142:10: (~ ( '\\\\' | '\"' ) | '\\\\' . )*
|
561
|
+
while true # decision 4
|
562
562
|
alt_4 = 3
|
563
563
|
look_4_0 = @input.peek(1)
|
564
564
|
|
@@ -570,7 +570,7 @@ class Group
|
|
570
570
|
end
|
571
571
|
case alt_4
|
572
572
|
when 1
|
573
|
-
# at line
|
573
|
+
# at line 142:12: ~ ( '\\\\' | '\"' )
|
574
574
|
if @input.peek(1).between?(0x0000, ?!) || @input.peek(1).between?(?#, ?[) || @input.peek(1).between?(?], 0x00FF)
|
575
575
|
@input.consume
|
576
576
|
else
|
@@ -582,7 +582,7 @@ class Group
|
|
582
582
|
|
583
583
|
|
584
584
|
when 2
|
585
|
-
# at line
|
585
|
+
# at line 142:31: '\\\\' .
|
586
586
|
match(?\\)
|
587
587
|
match_any
|
588
588
|
|
@@ -593,10 +593,10 @@ class Group
|
|
593
593
|
match(?")
|
594
594
|
|
595
595
|
when 2
|
596
|
-
# at line
|
596
|
+
# at line 143:5: '\\'' (~ ( '\\\\' | '\\'' ) | '\\\\' . )* '\\''
|
597
597
|
match(?\')
|
598
|
-
# at line
|
599
|
-
|
598
|
+
# at line 143:10: (~ ( '\\\\' | '\\'' ) | '\\\\' . )*
|
599
|
+
while true # decision 5
|
600
600
|
alt_5 = 3
|
601
601
|
look_5_0 = @input.peek(1)
|
602
602
|
|
@@ -608,7 +608,7 @@ class Group
|
|
608
608
|
end
|
609
609
|
case alt_5
|
610
610
|
when 1
|
611
|
-
# at line
|
611
|
+
# at line 143:12: ~ ( '\\\\' | '\\'' )
|
612
612
|
if @input.peek(1).between?(0x0000, ?&) || @input.peek(1).between?(?(, ?[) || @input.peek(1).between?(?], 0x00FF)
|
613
613
|
@input.consume
|
614
614
|
else
|
@@ -620,7 +620,7 @@ class Group
|
|
620
620
|
|
621
621
|
|
622
622
|
when 2
|
623
|
-
# at line
|
623
|
+
# at line 143:31: '\\\\' .
|
624
624
|
match(?\\)
|
625
625
|
match_any
|
626
626
|
|
@@ -652,7 +652,7 @@ class Group
|
|
652
652
|
|
653
653
|
|
654
654
|
# - - - - main rule block - - - -
|
655
|
-
# at line
|
655
|
+
# at line 148:3: ( ( '#' | '//' ) (~ '\\n' )* | '/*' ( . )* '*/' )
|
656
656
|
alt_10 = 2
|
657
657
|
look_10_0 = @input.peek(1)
|
658
658
|
|
@@ -675,8 +675,8 @@ class Group
|
|
675
675
|
end
|
676
676
|
case alt_10
|
677
677
|
when 1
|
678
|
-
# at line
|
679
|
-
# at line
|
678
|
+
# at line 148:5: ( '#' | '//' ) (~ '\\n' )*
|
679
|
+
# at line 148:5: ( '#' | '//' )
|
680
680
|
alt_7 = 2
|
681
681
|
look_7_0 = @input.peek(1)
|
682
682
|
|
@@ -690,16 +690,16 @@ class Group
|
|
690
690
|
end
|
691
691
|
case alt_7
|
692
692
|
when 1
|
693
|
-
# at line
|
693
|
+
# at line 148:7: '#'
|
694
694
|
match(?#)
|
695
695
|
|
696
696
|
when 2
|
697
|
-
# at line
|
697
|
+
# at line 148:13: '//'
|
698
698
|
match("//")
|
699
699
|
|
700
700
|
end
|
701
|
-
# at line
|
702
|
-
|
701
|
+
# at line 148:20: (~ '\\n' )*
|
702
|
+
while true # decision 8
|
703
703
|
alt_8 = 2
|
704
704
|
look_8_0 = @input.peek(1)
|
705
705
|
|
@@ -709,7 +709,7 @@ class Group
|
|
709
709
|
end
|
710
710
|
case alt_8
|
711
711
|
when 1
|
712
|
-
# at line
|
712
|
+
# at line 148:20: ~ '\\n'
|
713
713
|
if @input.peek(1).between?(0x0000, ?\t) || @input.peek(1).between?(0x000B, 0x00FF)
|
714
714
|
@input.consume
|
715
715
|
else
|
@@ -726,10 +726,10 @@ class Group
|
|
726
726
|
end # loop for decision 8
|
727
727
|
|
728
728
|
when 2
|
729
|
-
# at line
|
729
|
+
# at line 149:5: '/*' ( . )* '*/'
|
730
730
|
match("/*")
|
731
|
-
# at line
|
732
|
-
|
731
|
+
# at line 149:10: ( . )*
|
732
|
+
while true # decision 9
|
733
733
|
alt_9 = 2
|
734
734
|
look_9_0 = @input.peek(1)
|
735
735
|
|
@@ -748,7 +748,7 @@ class Group
|
|
748
748
|
end
|
749
749
|
case alt_9
|
750
750
|
when 1
|
751
|
-
# at line
|
751
|
+
# at line 149:10: .
|
752
752
|
match_any
|
753
753
|
|
754
754
|
else
|
@@ -781,10 +781,10 @@ class Group
|
|
781
781
|
|
782
782
|
|
783
783
|
# - - - - main rule block - - - -
|
784
|
-
# at line
|
785
|
-
# at file
|
784
|
+
# at line 153:5: ( ' ' | '\\t' | '\\n' | '\\r' | '\\f' )+
|
785
|
+
# at file 153:5: ( ' ' | '\\t' | '\\n' | '\\r' | '\\f' )+
|
786
786
|
match_count_11 = 0
|
787
|
-
|
787
|
+
while true
|
788
788
|
alt_11 = 2
|
789
789
|
look_11_0 = @input.peek(1)
|
790
790
|
|
@@ -3,9 +3,9 @@
|
|
3
3
|
# Group.g
|
4
4
|
#
|
5
5
|
# Generated using ANTLR version: 3.2.1-SNAPSHOT Dec 18, 2009 04:29:28
|
6
|
-
# Ruby runtime library version: 1.
|
6
|
+
# Ruby runtime library version: 1.5.0
|
7
7
|
# Input grammar file: Group.g
|
8
|
-
# Generated at: 2010-01-
|
8
|
+
# Generated at: 2010-01-27 10:24:01
|
9
9
|
#
|
10
10
|
|
11
11
|
# ~~~> start load path setup
|
@@ -16,7 +16,7 @@ antlr_load_failed = proc do
|
|
16
16
|
load_path = $LOAD_PATH.map { |dir| ' - ' << dir }.join( $/ )
|
17
17
|
raise LoadError, <<-END.strip!
|
18
18
|
|
19
|
-
Failed to load the ANTLR3 runtime library (version 1.
|
19
|
+
Failed to load the ANTLR3 runtime library (version 1.5.0):
|
20
20
|
|
21
21
|
Ensure the library has been installed on your system and is available
|
22
22
|
on the load path. If rubygems is available on your system, this can
|
@@ -30,7 +30,7 @@ Current load path:
|
|
30
30
|
END
|
31
31
|
end
|
32
32
|
|
33
|
-
defined?(ANTLR3) or begin
|
33
|
+
defined?( ANTLR3 ) or begin
|
34
34
|
|
35
35
|
# 1: try to load the ruby antlr3 runtime library from the system path
|
36
36
|
require 'antlr3'
|
@@ -38,7 +38,7 @@ defined?(ANTLR3) or begin
|
|
38
38
|
rescue LoadError
|
39
39
|
|
40
40
|
# 2: try to load rubygems if it isn't already loaded
|
41
|
-
defined?(Gem) or begin
|
41
|
+
defined?( Gem ) or begin
|
42
42
|
require 'rubygems'
|
43
43
|
rescue LoadError
|
44
44
|
antlr_load_failed.call
|
@@ -46,7 +46,7 @@ rescue LoadError
|
|
46
46
|
|
47
47
|
# 3: try to activate the antlr3 gem
|
48
48
|
begin
|
49
|
-
Gem.activate( 'antlr3', '
|
49
|
+
Gem.activate( 'antlr3', '~> 1.5.0' )
|
50
50
|
rescue Gem::LoadError
|
51
51
|
antlr_load_failed.call
|
52
52
|
end
|
@@ -75,10 +75,10 @@ class Group
|
|
75
75
|
module TokenData
|
76
76
|
|
77
77
|
# define the token constants
|
78
|
-
define_tokens(:ID => 5, :EOF => -1, :T__19 => 19, :T__16 => 16, :WS => 9,
|
79
|
-
|
80
|
-
|
81
|
-
|
78
|
+
define_tokens( :ID => 5, :EOF => -1, :T__19 => 19, :T__16 => 16, :WS => 9,
|
79
|
+
:T__15 => 15, :T__18 => 18, :T__17 => 17, :T__12 => 12,
|
80
|
+
:TEMPLATE => 6, :T__11 => 11, :T__14 => 14, :T__13 => 13,
|
81
|
+
:T__10 => 10, :CONSTANT => 4, :COMMENT => 8, :STRING => 7 )
|
82
82
|
|
83
83
|
# register the proper human-readable name or literal value
|
84
84
|
# for each token type
|
@@ -86,9 +86,9 @@ class Group
|
|
86
86
|
# this is necessary because anonymous tokens, which are
|
87
87
|
# created from literal values in the grammar, do not
|
88
88
|
# have descriptive names
|
89
|
-
register_names("CONSTANT", "ID", "TEMPLATE", "STRING", "COMMENT", "WS",
|
90
|
-
|
91
|
-
|
89
|
+
register_names( "CONSTANT", "ID", "TEMPLATE", "STRING", "COMMENT", "WS",
|
90
|
+
"'group'", "'::'", "';'", "'::='", "'('", "')'", "','",
|
91
|
+
"'*'", "'&'", "'='" )
|
92
92
|
|
93
93
|
end
|
94
94
|
|
@@ -96,16 +96,16 @@ class Group
|
|
96
96
|
class Parser < ANTLR3::Parser
|
97
97
|
@grammar_home = Group
|
98
98
|
|
99
|
-
RULE_METHODS = [:group_spec, :group_name, :member, :parameter_declaration,
|
100
|
-
|
99
|
+
RULE_METHODS = [ :group_spec, :group_name, :member, :parameter_declaration,
|
100
|
+
:parameters, :parameter ].freeze
|
101
101
|
|
102
102
|
|
103
103
|
include TokenData
|
104
104
|
|
105
|
-
generated_using( "Group.g", "3.2.1-SNAPSHOT Dec 18, 2009 04:29:28", "1.
|
105
|
+
generated_using( "Group.g", "3.2.1-SNAPSHOT Dec 18, 2009 04:29:28", "1.5.0" )
|
106
106
|
|
107
|
-
def initialize(input, options = {})
|
108
|
-
super(input, options)
|
107
|
+
def initialize( input, options = {} )
|
108
|
+
super( input, options )
|
109
109
|
|
110
110
|
|
111
111
|
end
|
@@ -123,10 +123,33 @@ class Group
|
|
123
123
|
return( group )
|
124
124
|
end
|
125
125
|
|
126
|
+
def unescape( text )
|
127
|
+
text.gsub( /\\(?:([abefnrstv])|([0-7]{3})|x([0-9a-fA-F]{2})|(.))/ ) do
|
128
|
+
if $1
|
129
|
+
case $1[0]
|
130
|
+
when ?a then "\a"
|
131
|
+
when ?b then "\b"
|
132
|
+
when ?e then "\e"
|
133
|
+
when ?f then "\f"
|
134
|
+
when ?n then "\n"
|
135
|
+
when ?r then "\r"
|
136
|
+
when ?s then "\s"
|
137
|
+
when ?t then "\t"
|
138
|
+
when ?v then "\v"
|
139
|
+
end
|
140
|
+
elsif $2 then $2.to_i( 8 ).chr
|
141
|
+
elsif $3 then $3.to_i( 16 ).chr
|
142
|
+
elsif $4 then $4
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
126
147
|
def extract_template( token )
|
127
148
|
case token.type
|
128
149
|
when TEMPLATE
|
129
150
|
token.text.gsub( /\A<<<\r?\n?|\r?\n?>>>\Z/, '' )
|
151
|
+
when STRING
|
152
|
+
unescape( token.text[1...-1] )
|
130
153
|
end
|
131
154
|
end
|
132
155
|
|
@@ -136,10 +159,12 @@ class Group
|
|
136
159
|
|
137
160
|
# - - - - - - - - - - - - Rules - - - - - - - - - - - - -
|
138
161
|
|
162
|
+
#
|
139
163
|
# parser rule group_spec
|
140
164
|
#
|
141
165
|
# (in Group.g)
|
142
|
-
#
|
166
|
+
# 81:1: group_spec[ namespace ] returns [ group ] : ( group_name[ $namespace ] | ) ( member[ $group ] )* ;
|
167
|
+
#
|
143
168
|
def group_spec(namespace)
|
144
169
|
# -> uncomment the next line to manually enable rule tracing
|
145
170
|
# trace_in(__method__, 1)
|
@@ -147,8 +172,8 @@ class Group
|
|
147
172
|
group_name1 = nil
|
148
173
|
|
149
174
|
begin
|
150
|
-
# at line
|
151
|
-
# at line
|
175
|
+
# at line 82:5: ( group_name[ $namespace ] | ) ( member[ $group ] )*
|
176
|
+
# at line 82:5: ( group_name[ $namespace ] | )
|
152
177
|
alt_1 = 2
|
153
178
|
look_1_0 = @input.peek(1)
|
154
179
|
|
@@ -162,7 +187,7 @@ class Group
|
|
162
187
|
end
|
163
188
|
case alt_1
|
164
189
|
when 1
|
165
|
-
# at line
|
190
|
+
# at line 82:7: group_name[ $namespace ]
|
166
191
|
@state.following.push(TOKENS_FOLLOWING_group_name_IN_group_spec_87)
|
167
192
|
group_name1 = group_name(namespace)
|
168
193
|
@state.following.pop
|
@@ -171,14 +196,14 @@ class Group
|
|
171
196
|
# <-- action
|
172
197
|
|
173
198
|
when 2
|
174
|
-
# at line
|
199
|
+
# at line 83:7:
|
175
200
|
# --> action
|
176
201
|
group = ANTLR3::Template::Group.new
|
177
202
|
# <-- action
|
178
203
|
|
179
204
|
end
|
180
|
-
# at line
|
181
|
-
|
205
|
+
# at line 85:5: ( member[ $group ] )*
|
206
|
+
while true # decision 2
|
182
207
|
alt_2 = 2
|
183
208
|
look_2_0 = @input.peek(1)
|
184
209
|
|
@@ -188,7 +213,7 @@ class Group
|
|
188
213
|
end
|
189
214
|
case alt_2
|
190
215
|
when 1
|
191
|
-
# at line
|
216
|
+
# at line 85:5: member[ $group ]
|
192
217
|
@state.following.push(TOKENS_FOLLOWING_member_IN_group_spec_110)
|
193
218
|
member(group)
|
194
219
|
@state.following.pop
|
@@ -212,10 +237,12 @@ class Group
|
|
212
237
|
end
|
213
238
|
|
214
239
|
|
240
|
+
#
|
215
241
|
# parser rule group_name
|
216
242
|
#
|
217
243
|
# (in Group.g)
|
218
|
-
#
|
244
|
+
# 88:1: group_name[ namespace ] returns [ group ] : 'group' (mod= CONSTANT '::' )* name= CONSTANT ( ';' )? ;
|
245
|
+
#
|
219
246
|
def group_name(namespace)
|
220
247
|
# -> uncomment the next line to manually enable rule tracing
|
221
248
|
# trace_in(__method__, 2)
|
@@ -224,10 +251,10 @@ class Group
|
|
224
251
|
name = nil
|
225
252
|
|
226
253
|
begin
|
227
|
-
# at line
|
254
|
+
# at line 89:5: 'group' (mod= CONSTANT '::' )* name= CONSTANT ( ';' )?
|
228
255
|
match(T__10, TOKENS_FOLLOWING_T__10_IN_group_name_130)
|
229
|
-
# at line
|
230
|
-
|
256
|
+
# at line 90:5: (mod= CONSTANT '::' )*
|
257
|
+
while true # decision 3
|
231
258
|
alt_3 = 2
|
232
259
|
look_3_0 = @input.peek(1)
|
233
260
|
|
@@ -242,7 +269,7 @@ class Group
|
|
242
269
|
end
|
243
270
|
case alt_3
|
244
271
|
when 1
|
245
|
-
# at line
|
272
|
+
# at line 91:7: mod= CONSTANT '::'
|
246
273
|
mod = match(CONSTANT, TOKENS_FOLLOWING_CONSTANT_IN_group_name_146)
|
247
274
|
match(T__11, TOKENS_FOLLOWING_T__11_IN_group_name_148)
|
248
275
|
# --> action
|
@@ -257,7 +284,7 @@ class Group
|
|
257
284
|
# --> action
|
258
285
|
group = fetch_group( namespace, name.text )
|
259
286
|
# <-- action
|
260
|
-
# at line
|
287
|
+
# at line 95:5: ( ';' )?
|
261
288
|
alt_4 = 2
|
262
289
|
look_4_0 = @input.peek(1)
|
263
290
|
|
@@ -266,7 +293,7 @@ class Group
|
|
266
293
|
end
|
267
294
|
case alt_4
|
268
295
|
when 1
|
269
|
-
# at line
|
296
|
+
# at line 95:5: ';'
|
270
297
|
match(T__12, TOKENS_FOLLOWING_T__12_IN_group_name_179)
|
271
298
|
|
272
299
|
end
|
@@ -285,24 +312,27 @@ class Group
|
|
285
312
|
end
|
286
313
|
|
287
314
|
|
315
|
+
#
|
288
316
|
# parser rule member
|
289
317
|
#
|
290
318
|
# (in Group.g)
|
291
|
-
#
|
319
|
+
# 98:1: member[ group ] : name= ID ( parameter_declaration )? '::=' (aliased= ID | TEMPLATE | STRING ) ;
|
320
|
+
#
|
292
321
|
def member(group)
|
293
322
|
# -> uncomment the next line to manually enable rule tracing
|
294
323
|
# trace_in(__method__, 3)
|
295
324
|
name = nil
|
296
325
|
aliased = nil
|
297
326
|
__TEMPLATE3__ = nil
|
327
|
+
__STRING4__ = nil
|
298
328
|
parameter_declaration2 = nil
|
299
329
|
# - - - - @init action - - - -
|
300
330
|
params = nil
|
301
331
|
|
302
332
|
begin
|
303
|
-
# at line
|
333
|
+
# at line 100:5: name= ID ( parameter_declaration )? '::=' (aliased= ID | TEMPLATE | STRING )
|
304
334
|
name = match(ID, TOKENS_FOLLOWING_ID_IN_member_201)
|
305
|
-
# at line
|
335
|
+
# at line 100:13: ( parameter_declaration )?
|
306
336
|
alt_5 = 2
|
307
337
|
look_5_0 = @input.peek(1)
|
308
338
|
|
@@ -311,7 +341,7 @@ class Group
|
|
311
341
|
end
|
312
342
|
case alt_5
|
313
343
|
when 1
|
314
|
-
# at line
|
344
|
+
# at line 100:15: parameter_declaration
|
315
345
|
@state.following.push(TOKENS_FOLLOWING_parameter_declaration_IN_member_205)
|
316
346
|
parameter_declaration2 = parameter_declaration
|
317
347
|
@state.following.pop
|
@@ -321,7 +351,7 @@ class Group
|
|
321
351
|
|
322
352
|
end
|
323
353
|
match(T__13, TOKENS_FOLLOWING_T__13_IN_member_212)
|
324
|
-
# at line
|
354
|
+
# at line 101:5: (aliased= ID | TEMPLATE | STRING )
|
325
355
|
alt_6 = 3
|
326
356
|
case look_6 = @input.peek(1)
|
327
357
|
when ID then alt_6 = 1
|
@@ -333,22 +363,25 @@ class Group
|
|
333
363
|
end
|
334
364
|
case alt_6
|
335
365
|
when 1
|
336
|
-
# at line
|
366
|
+
# at line 101:7: aliased= ID
|
337
367
|
aliased = match(ID, TOKENS_FOLLOWING_ID_IN_member_222)
|
338
368
|
# --> action
|
339
|
-
group.alias_template(
|
369
|
+
group.alias_template( name.text, aliased.text )
|
340
370
|
# <-- action
|
341
371
|
|
342
372
|
when 2
|
343
|
-
# at line
|
373
|
+
# at line 102:7: TEMPLATE
|
344
374
|
__TEMPLATE3__ = match(TEMPLATE, TOKENS_FOLLOWING_TEMPLATE_IN_member_232)
|
345
375
|
# --> action
|
346
376
|
group.define_template( name.text, extract_template( __TEMPLATE3__ ), params )
|
347
377
|
# <-- action
|
348
378
|
|
349
379
|
when 3
|
350
|
-
# at line
|
351
|
-
match(STRING, TOKENS_FOLLOWING_STRING_IN_member_244)
|
380
|
+
# at line 103:7: STRING
|
381
|
+
__STRING4__ = match(STRING, TOKENS_FOLLOWING_STRING_IN_member_244)
|
382
|
+
# --> action
|
383
|
+
group.define_template( name.text, extract_template( __STRING4__ ), params )
|
384
|
+
# <-- action
|
352
385
|
|
353
386
|
end
|
354
387
|
|
@@ -366,21 +399,23 @@ class Group
|
|
366
399
|
end
|
367
400
|
|
368
401
|
|
402
|
+
#
|
369
403
|
# parser rule parameter_declaration
|
370
404
|
#
|
371
405
|
# (in Group.g)
|
372
|
-
#
|
406
|
+
# 107:1: parameter_declaration returns [ list ] : ( '(' ( parameters )? ')' | parameters );
|
407
|
+
#
|
373
408
|
def parameter_declaration
|
374
409
|
# -> uncomment the next line to manually enable rule tracing
|
375
410
|
# trace_in(__method__, 4)
|
376
411
|
list = nil
|
377
|
-
parameters4 = nil
|
378
412
|
parameters5 = nil
|
413
|
+
parameters6 = nil
|
379
414
|
# - - - - @init action - - - -
|
380
415
|
list = nil
|
381
416
|
|
382
417
|
begin
|
383
|
-
# at line
|
418
|
+
# at line 109:3: ( '(' ( parameters )? ')' | parameters )
|
384
419
|
alt_8 = 2
|
385
420
|
look_8_0 = @input.peek(1)
|
386
421
|
|
@@ -394,9 +429,9 @@ class Group
|
|
394
429
|
end
|
395
430
|
case alt_8
|
396
431
|
when 1
|
397
|
-
# at line
|
398
|
-
match(T__14,
|
399
|
-
# at line
|
432
|
+
# at line 109:5: '(' ( parameters )? ')'
|
433
|
+
match(T__14, TOKENS_FOLLOWING_T__14_IN_parameter_declaration_278)
|
434
|
+
# at line 109:9: ( parameters )?
|
400
435
|
alt_7 = 2
|
401
436
|
look_7_0 = @input.peek(1)
|
402
437
|
|
@@ -405,24 +440,24 @@ class Group
|
|
405
440
|
end
|
406
441
|
case alt_7
|
407
442
|
when 1
|
408
|
-
# at line
|
409
|
-
@state.following.push(
|
410
|
-
|
443
|
+
# at line 109:11: parameters
|
444
|
+
@state.following.push(TOKENS_FOLLOWING_parameters_IN_parameter_declaration_282)
|
445
|
+
parameters5 = parameters
|
411
446
|
@state.following.pop
|
412
447
|
# --> action
|
413
|
-
list =
|
448
|
+
list = parameters5
|
414
449
|
# <-- action
|
415
450
|
|
416
451
|
end
|
417
|
-
match(T__15,
|
452
|
+
match(T__15, TOKENS_FOLLOWING_T__15_IN_parameter_declaration_289)
|
418
453
|
|
419
454
|
when 2
|
420
|
-
# at line
|
421
|
-
@state.following.push(
|
422
|
-
|
455
|
+
# at line 110:5: parameters
|
456
|
+
@state.following.push(TOKENS_FOLLOWING_parameters_IN_parameter_declaration_295)
|
457
|
+
parameters6 = parameters
|
423
458
|
@state.following.pop
|
424
459
|
# --> action
|
425
|
-
list =
|
460
|
+
list = parameters6
|
426
461
|
# <-- action
|
427
462
|
|
428
463
|
end
|
@@ -440,10 +475,12 @@ class Group
|
|
440
475
|
end
|
441
476
|
|
442
477
|
|
478
|
+
#
|
443
479
|
# parser rule parameters
|
444
480
|
#
|
445
481
|
# (in Group.g)
|
446
|
-
#
|
482
|
+
# 113:1: parameters returns [ list ] : parameter[ $list ] ( ',' parameter[ $list ] )* ;
|
483
|
+
#
|
447
484
|
def parameters
|
448
485
|
# -> uncomment the next line to manually enable rule tracing
|
449
486
|
# trace_in(__method__, 5)
|
@@ -452,12 +489,12 @@ class Group
|
|
452
489
|
list = ANTLR3::Template::ParameterList.new
|
453
490
|
|
454
491
|
begin
|
455
|
-
# at line
|
456
|
-
@state.following.push(
|
492
|
+
# at line 115:5: parameter[ $list ] ( ',' parameter[ $list ] )*
|
493
|
+
@state.following.push(TOKENS_FOLLOWING_parameter_IN_parameters_319)
|
457
494
|
parameter(list)
|
458
495
|
@state.following.pop
|
459
|
-
# at line
|
460
|
-
|
496
|
+
# at line 115:24: ( ',' parameter[ $list ] )*
|
497
|
+
while true # decision 9
|
461
498
|
alt_9 = 2
|
462
499
|
look_9_0 = @input.peek(1)
|
463
500
|
|
@@ -467,9 +504,9 @@ class Group
|
|
467
504
|
end
|
468
505
|
case alt_9
|
469
506
|
when 1
|
470
|
-
# at line
|
471
|
-
match(T__16,
|
472
|
-
@state.following.push(
|
507
|
+
# at line 115:26: ',' parameter[ $list ]
|
508
|
+
match(T__16, TOKENS_FOLLOWING_T__16_IN_parameters_324)
|
509
|
+
@state.following.push(TOKENS_FOLLOWING_parameter_IN_parameters_326)
|
473
510
|
parameter(list)
|
474
511
|
@state.following.pop
|
475
512
|
|
@@ -492,10 +529,12 @@ class Group
|
|
492
529
|
end
|
493
530
|
|
494
531
|
|
532
|
+
#
|
495
533
|
# parser rule parameter
|
496
534
|
#
|
497
535
|
# (in Group.g)
|
498
|
-
#
|
536
|
+
# 118:1: parameter[ parameters ] : ( '*' name= ID | '&' name= ID | name= ID ( '=' v= STRING )? );
|
537
|
+
#
|
499
538
|
def parameter(parameters)
|
500
539
|
# -> uncomment the next line to manually enable rule tracing
|
501
540
|
# trace_in(__method__, 6)
|
@@ -503,7 +542,7 @@ class Group
|
|
503
542
|
v = nil
|
504
543
|
|
505
544
|
begin
|
506
|
-
# at line
|
545
|
+
# at line 119:3: ( '*' name= ID | '&' name= ID | name= ID ( '=' v= STRING )? )
|
507
546
|
alt_11 = 3
|
508
547
|
case look_11 = @input.peek(1)
|
509
548
|
when T__17 then alt_11 = 1
|
@@ -515,28 +554,28 @@ class Group
|
|
515
554
|
end
|
516
555
|
case alt_11
|
517
556
|
when 1
|
518
|
-
# at line
|
519
|
-
match(T__17,
|
520
|
-
name = match(ID,
|
557
|
+
# at line 119:5: '*' name= ID
|
558
|
+
match(T__17, TOKENS_FOLLOWING_T__17_IN_parameter_344)
|
559
|
+
name = match(ID, TOKENS_FOLLOWING_ID_IN_parameter_348)
|
521
560
|
# --> action
|
522
561
|
parameters.splat = name.text
|
523
562
|
# <-- action
|
524
563
|
|
525
564
|
when 2
|
526
|
-
# at line
|
527
|
-
match(T__18,
|
528
|
-
name = match(ID,
|
565
|
+
# at line 120:5: '&' name= ID
|
566
|
+
match(T__18, TOKENS_FOLLOWING_T__18_IN_parameter_356)
|
567
|
+
name = match(ID, TOKENS_FOLLOWING_ID_IN_parameter_360)
|
529
568
|
# --> action
|
530
569
|
parameters.block = name.text
|
531
570
|
# <-- action
|
532
571
|
|
533
572
|
when 3
|
534
|
-
# at line
|
535
|
-
name = match(ID,
|
573
|
+
# at line 121:5: name= ID ( '=' v= STRING )?
|
574
|
+
name = match(ID, TOKENS_FOLLOWING_ID_IN_parameter_370)
|
536
575
|
# --> action
|
537
576
|
param = ANTLR3::Template::Parameter.new( name.text )
|
538
577
|
# <-- action
|
539
|
-
# at line
|
578
|
+
# at line 122:5: ( '=' v= STRING )?
|
540
579
|
alt_10 = 2
|
541
580
|
look_10_0 = @input.peek(1)
|
542
581
|
|
@@ -545,9 +584,9 @@ class Group
|
|
545
584
|
end
|
546
585
|
case alt_10
|
547
586
|
when 1
|
548
|
-
# at line
|
549
|
-
match(T__19,
|
550
|
-
v = match(STRING,
|
587
|
+
# at line 122:7: '=' v= STRING
|
588
|
+
match(T__19, TOKENS_FOLLOWING_T__19_IN_parameter_384)
|
589
|
+
v = match(STRING, TOKENS_FOLLOWING_STRING_IN_parameter_388)
|
551
590
|
# --> action
|
552
591
|
param.default = v.text
|
553
592
|
# <-- action
|
@@ -586,20 +625,20 @@ class Group
|
|
586
625
|
TOKENS_FOLLOWING_ID_IN_member_222 = Set[1]
|
587
626
|
TOKENS_FOLLOWING_TEMPLATE_IN_member_232 = Set[1]
|
588
627
|
TOKENS_FOLLOWING_STRING_IN_member_244 = Set[1]
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
628
|
+
TOKENS_FOLLOWING_T__14_IN_parameter_declaration_278 = Set[5, 14, 15, 17, 18]
|
629
|
+
TOKENS_FOLLOWING_parameters_IN_parameter_declaration_282 = Set[15]
|
630
|
+
TOKENS_FOLLOWING_T__15_IN_parameter_declaration_289 = Set[1]
|
631
|
+
TOKENS_FOLLOWING_parameters_IN_parameter_declaration_295 = Set[1]
|
632
|
+
TOKENS_FOLLOWING_parameter_IN_parameters_319 = Set[1, 16]
|
633
|
+
TOKENS_FOLLOWING_T__16_IN_parameters_324 = Set[5, 14, 17, 18]
|
634
|
+
TOKENS_FOLLOWING_parameter_IN_parameters_326 = Set[1, 16]
|
635
|
+
TOKENS_FOLLOWING_T__17_IN_parameter_344 = Set[5]
|
636
|
+
TOKENS_FOLLOWING_ID_IN_parameter_348 = Set[1]
|
637
|
+
TOKENS_FOLLOWING_T__18_IN_parameter_356 = Set[5]
|
638
|
+
TOKENS_FOLLOWING_ID_IN_parameter_360 = Set[1]
|
639
|
+
TOKENS_FOLLOWING_ID_IN_parameter_370 = Set[1, 19]
|
640
|
+
TOKENS_FOLLOWING_T__19_IN_parameter_384 = Set[7]
|
641
|
+
TOKENS_FOLLOWING_STRING_IN_parameter_388 = Set[1]
|
603
642
|
|
604
643
|
end # class Parser < ANTLR3::Parser
|
605
644
|
|