1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#!/usr/bin/ruby 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver# encoding: utf-8 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverrequire 'antlr3/test/functional' 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass TestASTRewritingTreeParsers < ANTLR3::Test::Functional 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar FlatList; 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT; 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar FlatListWalker; 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=FlatList; 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> INT ID; 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar SimpleTree; 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT); 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar SimpleTreeWalker; 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=SimpleTree; 51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(ID INT) -> ^(INT ID); 53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-END ) 56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar CombinedRewriteAndAuto; 57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT) | INT ; 62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\\n') {$channel=HIDDEN;} ; 65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-END ) 68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar CombinedRewriteAndAutoTree; 69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=CombinedRewriteAndAuto; 74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(ID INT) -> ^(INT ID) | INT; 76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AvoidDup; 80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID ; 85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AvoidDupWalker; 92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=AvoidDup; 97324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 98324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID -> ^(ID ID); 99324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar Loop; 103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID+ INT+ -> (^(ID INT))+ ; 108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar LoopWalker; 115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=Loop; 120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : (^(ID INT))+ -> INT+ ID+; 122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 123324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 124324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 125324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AutoDup; 126324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 127324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 128324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 129324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 130324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID ; 131324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 132324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 133324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 134324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 135324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 136324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 137324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AutoDupWalker; 138324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 139324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 140324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 141324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 142324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=AutoDup; 143324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 144324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID; 145324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 146324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 147324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 148324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AutoDupRule; 149324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 150324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 151324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 152324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 153324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT ; 154324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 155324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 156324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 157324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 158324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 159324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 160324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AutoDupRuleWalker; 161324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 162324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 163324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 164324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 165324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=AutoDupRule; 166324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 167324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : b c ; 168324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver b : ID ; 169324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver c : INT ; 170324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 171324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 172324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 173324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AutoWildcard; 174324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby;output=AST;} 175324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT ; 176324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 177324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 178324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 179324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 180324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 181324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 182324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AutoWildcardWalker; 183324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby;output=AST; ASTLabelType=CommonTree; tokenVocab=AutoWildcard;} 184324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID . 185324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 186324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 187324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 188324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 189324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AutoWildcard2; 190324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby;output=AST;} 191324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT); 192324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 193324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 194324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 195324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 196324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 197324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 198324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AutoWildcard2Walker; 199324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby;output=AST; ASTLabelType=CommonTree; tokenVocab=AutoWildcard2;} 200324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(ID .) 201324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 202324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 203324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 204324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 205324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AutoWildcardWithLabel; 206324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby;output=AST;} 207324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT ; 208324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 209324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 210324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 211324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 212324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 213324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 214324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AutoWildcardWithLabelWalker; 215324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby;output=AST; ASTLabelType=CommonTree; tokenVocab=AutoWildcardWithLabel;} 216324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID c=. 217324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 218324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 219324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 220324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 221324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AutoWildcardWithListLabel; 222324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby;output=AST;} 223324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT ; 224324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 225324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 226324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 227324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 228324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 229324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 230324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AutoWildcardWithListLabelWalker; 231324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby;output=AST; ASTLabelType=CommonTree; tokenVocab=AutoWildcardWithListLabel;} 232324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID c+=. 233324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 234324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 235324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 236324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 237324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AutoDupMultiple; 238324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 239324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 240324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 241324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 242324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID ID INT; 243324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 244324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 245324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 246324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 247324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 248324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 249324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AutoDupMultipleWalker; 250324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 251324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 252324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 253324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 254324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=AutoDupMultiple; 255324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 256324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID ID INT 257324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 258324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 259324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 260324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 261324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AutoDupTree; 262324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 263324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 264324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 265324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 266324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT); 267324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 268324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 269324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 270324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 271324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 272324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 273324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AutoDupTreeWalker; 274324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 275324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 276324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 277324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 278324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=AutoDupTree; 279324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 280324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(ID INT) 281324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 282324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 283324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 284324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 285324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AutoDupTreeWithLabels; 286324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 287324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 288324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 289324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 290324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT); 291324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 292324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 293324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 294324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 295324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 296324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 297324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AutoDupTreeWithLabelsWalker; 298324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 299324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 300324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 301324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 302324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=AutoDupTreeWithLabels; 303324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 304324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(x=ID y=INT) 305324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 306324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 307324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 308324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 309324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AutoDupTreeWithListLabels; 310324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 311324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 312324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 313324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 314324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT); 315324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 316324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 317324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 318324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 319324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 320324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 321324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AutoDupTreeWithListLabelsWalker; 322324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 323324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 324324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 325324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 326324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=AutoDupTreeWithListLabels; 327324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 328324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(x+=ID y+=INT) 329324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 330324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 331324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 332324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 333324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AutoDupTreeWithRuleRoot; 334324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 335324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 336324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 337324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 338324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT); 339324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 340324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 341324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 342324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 343324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 344324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 345324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AutoDupTreeWithRuleRootWalker; 346324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 347324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 348324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 349324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 350324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=AutoDupTreeWithRuleRoot; 351324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 352324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(b INT) ; 353324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver b : ID ; 354324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 355324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 356324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 357324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AutoDupTreeWithRuleRootAndLabels; 358324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 359324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 360324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 361324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 362324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT); 363324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 364324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 365324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 366324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 367324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 368324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 369324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AutoDupTreeWithRuleRootAndLabelsWalker; 370324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 371324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 372324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 373324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 374324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=AutoDupTreeWithRuleRootAndLabels; 375324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 376324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(x=b INT) ; 377324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver b : ID ; 378324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 379324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 380324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 381324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AutoDupTreeWithRuleRootAndListLabels; 382324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 383324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 384324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 385324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 386324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT); 387324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 388324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 389324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 390324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 391324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 392324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 393324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AutoDupTreeWithRuleRootAndListLabelsWalker; 394324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 395324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 396324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 397324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 398324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=AutoDupTreeWithRuleRootAndListLabels; 399324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 400324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(x+=b y+=c) ; 401324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver b : ID ; 402324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver c : INT ; 403324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 404324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 405324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 406324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar AutoDupNestedTree; 407324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 408324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 409324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 410324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 411324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : x=ID y=ID INT -> ^($x ^($y INT)); 412324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 413324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 414324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 415324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 416324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 417324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 418324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar AutoDupNestedTreeWalker; 419324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 420324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 421324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 422324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 423324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=AutoDupNestedTree; 424324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 425324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(ID ^(ID INT)) 426324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 427324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 428324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 429324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 430324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar Delete; 431324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 432324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 433324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 434324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 435324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID ; 436324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 437324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 438324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 439324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 440324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 441324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 442324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar DeleteWalker; 443324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 444324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 445324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 446324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 447324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=Delete; 448324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 449324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID -> 450324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 451324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 452324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 453324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 454324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar SetMatchNoRewrite; 455324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 456324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 457324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 458324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 459324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT ; 460324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 461324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 462324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 463324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 464324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 465324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 466324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar SetMatchNoRewriteWalker; 467324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 468324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 469324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 470324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 471324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=SetMatchNoRewrite; 472324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 473324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : b INT; 474324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver b : ID | INT; 475324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 476324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 477324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 478324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar SetOptionalMatchNoRewrite; 479324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 480324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 481324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 482324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 483324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT ; 484324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 485324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 486324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 487324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 488324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 489324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 490324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar SetOptionalMatchNoRewriteWalker; 491324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 492324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 493324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 494324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 495324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=SetOptionalMatchNoRewrite; 496324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 497324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : (ID|INT)? INT ; 498324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 499324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 500324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 501324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar SetMatchNoRewriteLevel2; 502324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 503324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 504324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 505324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 506324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : x=ID INT -> ^($x INT); 507324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 508324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 509324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 510324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 511324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 512324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 513324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar SetMatchNoRewriteLevel2Walker; 514324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 515324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 516324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 517324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 518324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=SetMatchNoRewriteLevel2; 519324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 520324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(ID (ID | INT) ) ; 521324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 522324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 523324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 524324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar SetMatchNoRewriteLevel2Root; 525324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 526324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 527324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 528324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 529324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : x=ID INT -> ^($x INT); 530324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 531324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 532324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 533324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 534324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 535324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 536324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar SetMatchNoRewriteLevel2RootWalker; 537324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 538324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 539324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 540324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 541324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=SetMatchNoRewriteLevel2Root; 542324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 543324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^((ID | INT) INT) ; 544324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 545324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 546324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-END ) 547324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteModeCombinedRewriteAndAuto; 548324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 549324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 550324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 551324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 552324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT) | INT ; 553324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 554324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 555324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\\n') {$channel=HIDDEN;} ; 556324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 557324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 558324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-END ) 559324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteModeCombinedRewriteAndAutoTree; 560324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 561324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 562324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 563324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 564324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=RewriteModeCombinedRewriteAndAuto; 565324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver rewrite=true; 566324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 567324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(ID INT) -> ^(ID["ick"] INT) 568324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver | INT // leaves it alone, returning $a.start 569324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 570324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 571324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 572324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 573324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteModeFlatTree; 574324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 575324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 576324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 577324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 578324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ID INT | INT ; 579324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 580324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 581324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 582324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 583324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 584324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 585324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteModeFlatTreeWalker; 586324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 587324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 588324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 589324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 590324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=RewriteModeFlatTree; 591324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver rewrite=true; 592324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 593324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ID a ; 594324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : INT -> INT["1"] 595324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 596324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 597324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 598324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 599324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteModeChainRuleFlatTree; 600324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 601324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ID INT | INT ; 602324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 603324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 604324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 605324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 606324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 607324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 608324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteModeChainRuleFlatTreeWalker; 609324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=RewriteModeChainRuleFlatTree; rewrite=true;} 610324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : a ; 611324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : b ; 612324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver b : ID INT -> INT ID 613324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 614324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 615324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 616324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 617324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteModeChainRuleTree; 618324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 619324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT) ; 620324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 621324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 622324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 623324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 624324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 625324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 626324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteModeChainRuleTreeWalker; 627324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=RewriteModeChainRuleTree; rewrite=true;} 628324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : a ; 629324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : b ; // a.tree must become b.tree 630324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver b : ^(ID INT) -> INT 631324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 632324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 633324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 634324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 635324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteModeChainRuleTree2; 636324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 637324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT) ; 638324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 639324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 640324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 641324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 642324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 643324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 644324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteModeChainRuleTree2Walker; 645324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=RewriteModeChainRuleTree2; rewrite=true;} 646324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens { X; } 647324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : a* b ; // only b contributes to tree, but it's after a*; s.tree = b.tree 648324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : X ; 649324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver b : ^(ID INT) -> INT 650324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 651324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 652324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 653324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 654324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteModeChainRuleTree3; 655324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 656324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : 'boo' ID INT -> 'boo' ^(ID INT) ; 657324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 658324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 659324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 660324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 661324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 662324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 663324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteModeChainRuleTree3Walker; 664324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=RewriteModeChainRuleTree3; rewrite=true;} 665324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens { X; } 666324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : 'boo' a* b ; // don't reset s.tree to b.tree due to 'boo' 667324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : X ; 668324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver b : ^(ID INT) -> INT 669324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 670324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 671324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 672324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 673324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteModeChainRuleTree4; 674324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 675324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : 'boo' ID INT -> ^('boo' ^(ID INT)) ; 676324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 677324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 678324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 679324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 680324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 681324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 682324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteModeChainRuleTree4Walker; 683324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=RewriteModeChainRuleTree4; rewrite=true;} 684324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens { X; } 685324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ^('boo' a* b) ; // don't reset s.tree to b.tree due to 'boo' 686324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : X ; 687324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver b : ^(ID INT) -> INT 688324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 689324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 690324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 691324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 692324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteModeChainRuleTree5; 693324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 694324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : 'boo' ID INT -> ^('boo' ^(ID INT)) ; 695324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 696324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 697324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 698324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 699324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 700324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 701324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteModeChainRuleTree5Walker; 702324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=RewriteModeChainRuleTree5; rewrite=true;} 703324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens { X; } 704324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ^(a b) ; // s.tree is a.tree 705324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : 'boo' ; 706324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver b : ^(ID INT) -> INT 707324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 708324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 709324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 710324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 711324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteOfRuleRef; 712324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 713324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ID INT | INT ; 714324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 715324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 716324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 717324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 718324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 719324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 720324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteOfRuleRefWalker; 721324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=RewriteOfRuleRef; rewrite=true;} 722324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : a -> a ; 723324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ID INT ; 724324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 725324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 726324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 727324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteOfRuleRefRoot; 728324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 729324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT INT -> ^(INT ^(ID INT)); 730324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 731324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 732324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 733324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 734324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 735324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 736324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteOfRuleRefRootWalker; 737324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=RewriteOfRuleRefRoot; rewrite=true;} 738324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ^(a ^(ID INT)) -> a ; 739324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : INT ; 740324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 741324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 742324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 743324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteOfRuleRefRootLabeled; 744324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 745324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT INT -> ^(INT ^(ID INT)); 746324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 747324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 748324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 749324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 750324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 751324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 752324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteOfRuleRefRootLabeledWalker; 753324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=RewriteOfRuleRefRootLabeled; rewrite=true;} 754324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ^(label=a ^(ID INT)) -> a ; 755324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : INT ; 756324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 757324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 758324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 759324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteOfRuleRefRootListLabeled; 760324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 761324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT INT -> ^(INT ^(ID INT)); 762324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 763324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 764324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 765324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 766324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 767324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 768324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteOfRuleRefRootListLabeledWalker; 769324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=RewriteOfRuleRefRootListLabeled; rewrite=true;} 770324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ^(label+=a ^(ID INT)) -> a ; 771324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : INT ; 772324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 773324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 774324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 775324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteOfRuleRefChild; 776324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 777324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID ^(INT INT)); 778324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 779324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 780324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 781324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 782324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 783324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 784324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteOfRuleRefChildWalker; 785324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=RewriteOfRuleRefChild; rewrite=true;} 786324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ^(ID a) -> a ; 787324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(INT INT) ; 788324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 789324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 790324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 791324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteOfRuleRefLabel; 792324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 793324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID ^(INT INT)); 794324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 795324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 796324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 797324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 798324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 799324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 800324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteOfRuleRefLabelWalker; 801324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=RewriteOfRuleRefLabel; rewrite=true;} 802324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ^(ID label=a) -> a ; 803324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(INT INT) ; 804324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 805324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 806324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 807324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteOfRuleRefListLabel; 808324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 809324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID ^(INT INT)); 810324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 811324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 812324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 813324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 814324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 815324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 816324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteOfRuleRefListLabelWalker; 817324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=RewriteOfRuleRefListLabel; rewrite=true;} 818324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ^(ID label+=a) -> a ; 819324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(INT INT) ; 820324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 821324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 822324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 823324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteModeWithPredicatedRewrites; 824324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 825324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 826324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 827324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 828324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID["root"] ^(ID INT)) | INT -> ^(ID["root"] INT) ; 829324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 830324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 831324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 832324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 833324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 834324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 835324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteModeWithPredicatedRewritesWalker; 836324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 837324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 838324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 839324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 840324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=RewriteModeWithPredicatedRewrites; 841324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver rewrite=true; 842324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 843324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ^(ID a) { 844324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver # self.buf += $s.start.inspect 845324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver }; 846324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(ID INT) -> {true}? ^(ID["ick"] INT) 847324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver -> INT 848324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 849324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 850324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 851324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 852324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar WildcardSingleNode; 853324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 854324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 855324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 856324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 857324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID["root"] INT); 858324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 859324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 860324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 861324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 862324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 863324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 864324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar WildcardSingleNodeWalker; 865324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 866324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 867324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 868324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 869324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=WildcardSingleNode; 870324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 871324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ^(ID c=.) -> $c 872324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 873324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 874324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 875324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 876324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar WildcardUnlabeledSingleNode; 877324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 878324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT); 879324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 880324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 881324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 882324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 883324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 884324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 885324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar WildcardUnlabeledSingleNodeWalker; 886324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=WildcardUnlabeledSingleNode;} 887324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ^(ID .) -> ID 888324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 889324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 890324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 891324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 892324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar WildcardListLabel; 893324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 894324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : INT INT INT ; 895324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 896324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 897324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 898324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 899324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 900324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 901324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar WildcardListLabelWalker; 902324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=WildcardListLabel;} 903324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : (c+=.)+ -> $c+ 904324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 905324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 906324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 907324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 908324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar WildcardListLabel2; 909324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree;} 910324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : x=INT y=INT z=INT -> ^($x ^($y $z) ^($y $z)); 911324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 912324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 913324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 914324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 915324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 916324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 917324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar WildcardListLabel2Walker; 918324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=WildcardListLabel2; rewrite=true;} 919324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ^(INT (c+=.)+) -> $c+ 920324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 921324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 922324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 923324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 924324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar WildcardGrabsSubtree; 925324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 926324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID x=INT y=INT z=INT -> ^(ID[\"root\"] ^($x $y $z)); 927324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 928324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 929324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 930324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 931324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 932324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 933324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar WildcardGrabsSubtreeWalker; 934324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=WildcardGrabsSubtree;} 935324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ^(ID c=.) -> $c 936324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 937324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 938324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 939324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 940324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar WildcardGrabsSubtree2; 941324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST;} 942324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID x=INT y=INT z=INT -> ID ^($x $y $z); 943324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 944324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 945324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\n') {$channel=HIDDEN;} ; 946324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 947324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 948324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-'END' ) 949324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar WildcardGrabsSubtree2Walker; 950324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options {language=Ruby; output=AST; ASTLabelType=CommonTree; tokenVocab=WildcardGrabsSubtree2;} 951324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver s : ID c=. -> $c 952324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 953324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 954324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 955324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-END ) 956324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar CombinedRewriteAndAuto; 957324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 958324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 959324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 960324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 961324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT) | INT ; 962324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 963324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 964324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\\n') {$channel=HIDDEN;} ; 965324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 966324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 967324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-END ) 968324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar CombinedRewriteAndAutoWalker; 969324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 970324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 971324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 972324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 973324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=CombinedRewriteAndAuto; 974324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 975324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(ID INT) -> ^(INT ID) | INT; 976324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 977324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 978324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-END ) 979324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver grammar RewriteModeCombinedRewriteAndAuto; 980324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 981324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 982324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 983324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 984324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ID INT -> ^(ID INT) | INT ; 985324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ID : 'a'..'z'+ ; 986324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver INT : '0'..'9'+; 987324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver WS : (' '|'\\n') {$channel=HIDDEN;} ; 988324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 989324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 990324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver inline_grammar( <<-END ) 991324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tree grammar RewriteModeCombinedRewriteAndAutoWalker; 992324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver options { 993324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver language=Ruby; 994324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver output=AST; 995324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ASTLabelType=CommonTree; 996324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokenVocab=RewriteModeCombinedRewriteAndAuto; 997324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver rewrite=true; 998324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 999324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver a : ^(ID INT) -> ^(ID["ick"] INT) 1000324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver | INT // leaves it alone, returning $a.start 1001324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ; 1002324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver END 1003324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1004324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "flat list" do 1005324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = FlatList::Lexer.new( "abc 34" ) 1006324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1007324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = FlatList::Parser.new( tokens ) 1008324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1009324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1010324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1011324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1012324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = FlatListWalker::TreeParser.new( nodes ) 1013324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1014324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1015324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "34 abc" 1016324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1017324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1018324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "simple tree" do 1019324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = SimpleTree::Lexer.new( "abc 34" ) 1020324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1021324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = SimpleTree::Parser.new( tokens ) 1022324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1023324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1024324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1025324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1026324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = SimpleTreeWalker::TreeParser.new( nodes ) 1027324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1028324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1029324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(34 abc)" 1030324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1031324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1032324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "combined rewrite and auto" do 1033324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = CombinedRewriteAndAuto::Lexer.new( "abc 34" ) 1034324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1035324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = CombinedRewriteAndAuto::Parser.new( tokens ) 1036324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1037324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1038324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1039324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1040324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = CombinedRewriteAndAutoWalker::TreeParser.new( nodes ) 1041324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a.tree 1042324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result.inspect.should == '(34 abc)' 1043324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = CombinedRewriteAndAuto::Lexer.new( "34" ) 1044324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1045324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = CombinedRewriteAndAuto::Parser.new( tokens ) 1046324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1047324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1048324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1049324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1050324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = CombinedRewriteAndAutoWalker::TreeParser.new( nodes ) 1051324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a.tree 1052324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result.inspect.should == '34' 1053324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1054324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1055324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "avoid dup" do 1056324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AvoidDup::Lexer.new( "abc" ) 1057324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1058324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AvoidDup::Parser.new( tokens ) 1059324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1060324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1061324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1062324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1063324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AvoidDupWalker::TreeParser.new( nodes ) 1064324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1065324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1066324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(abc abc)" 1067324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1068324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1069324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "loop" do 1070324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = Loop::Lexer.new( "a b c 3 4 5" ) 1071324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1072324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = Loop::Parser.new( tokens ) 1073324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1074324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1075324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1076324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1077324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = LoopWalker::TreeParser.new( nodes ) 1078324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1079324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1080324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "3 4 5 a b c" 1081324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1082324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1083324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "auto dup" do 1084324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AutoDup::Lexer.new( "abc" ) 1085324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1086324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AutoDup::Parser.new( tokens ) 1087324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1088324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1089324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1090324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1091324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AutoDupWalker::TreeParser.new( nodes ) 1092324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1093324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1094324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "abc" 1095324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1096324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1097324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "auto dup rule" do 1098324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AutoDupRule::Lexer.new( "a 1" ) 1099324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AutoDupRule::Parser.new( tokens ) 1101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AutoDupRuleWalker::TreeParser.new( nodes ) 1106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "a 1" 1109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "auto wildcard" do 1112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AutoWildcard::Lexer.new( "abc 34" ) 1113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AutoWildcard::Parser.new( tokens ) 1115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AutoWildcardWalker::TreeParser.new( nodes ) 1120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "abc 34" 1123324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1124324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1125324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "auto wildcard2" do 1126324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AutoWildcard2::Lexer.new( "abc 34" ) 1127324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1128324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AutoWildcard2::Parser.new( tokens ) 1129324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1130324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1131324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1132324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1133324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AutoWildcard2Walker::TreeParser.new( nodes ) 1134324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1135324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1136324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(abc 34)" 1137324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1138324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1139324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "auto wildcard with label" do 1140324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AutoWildcardWithLabel::Lexer.new( "abc 34" ) 1141324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1142324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AutoWildcardWithLabel::Parser.new( tokens ) 1143324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1144324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1145324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1146324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1147324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AutoWildcardWithLabelWalker::TreeParser.new( nodes ) 1148324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1149324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1150324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "abc 34" 1151324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1152324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1153324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "auto wildcard with list label" do 1154324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AutoWildcardWithListLabel::Lexer.new( "abc 34" ) 1155324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1156324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AutoWildcardWithListLabel::Parser.new( tokens ) 1157324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1158324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1159324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1160324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1161324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AutoWildcardWithListLabelWalker::TreeParser.new( nodes ) 1162324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1163324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1164324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "abc 34" 1165324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1166324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1167324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "auto dup multiple" do 1168324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AutoDupMultiple::Lexer.new( "a b 3" ) 1169324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1170324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AutoDupMultiple::Parser.new( tokens ) 1171324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1172324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1173324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1174324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1175324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AutoDupMultipleWalker::TreeParser.new( nodes ) 1176324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1177324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1178324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "a b 3" 1179324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1180324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1181324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "auto dup tree" do 1182324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AutoDupTree::Lexer.new( "a 3" ) 1183324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1184324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AutoDupTree::Parser.new( tokens ) 1185324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1186324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1187324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1188324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1189324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AutoDupTreeWalker::TreeParser.new( nodes ) 1190324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1191324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1192324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(a 3)" 1193324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1194324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1195324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "auto dup tree with labels" do 1196324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AutoDupTreeWithLabels::Lexer.new( "a 3" ) 1197324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1198324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AutoDupTreeWithLabels::Parser.new( tokens ) 1199324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1200324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1201324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1202324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1203324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AutoDupTreeWithLabelsWalker::TreeParser.new( nodes ) 1204324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1205324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1206324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(a 3)" 1207324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1208324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1209324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "auto dup tree with list labels" do 1210324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AutoDupTreeWithListLabels::Lexer.new( "a 3" ) 1211324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1212324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AutoDupTreeWithListLabels::Parser.new( tokens ) 1213324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1214324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1215324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1216324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1217324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AutoDupTreeWithListLabelsWalker::TreeParser.new( nodes ) 1218324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1219324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1220324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(a 3)" 1221324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1222324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1223324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "auto dup tree with rule root" do 1224324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AutoDupTreeWithRuleRoot::Lexer.new( "a 3" ) 1225324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1226324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AutoDupTreeWithRuleRoot::Parser.new( tokens ) 1227324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1228324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1229324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1230324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1231324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AutoDupTreeWithRuleRootWalker::TreeParser.new( nodes ) 1232324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1233324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1234324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(a 3)" 1235324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1236324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1237324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "auto dup tree with rule root and labels" do 1238324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AutoDupTreeWithRuleRootAndLabels::Lexer.new( "a 3" ) 1239324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1240324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AutoDupTreeWithRuleRootAndLabels::Parser.new( tokens ) 1241324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1242324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1243324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1244324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1245324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AutoDupTreeWithRuleRootAndLabelsWalker::TreeParser.new( nodes ) 1246324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1247324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1248324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(a 3)" 1249324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1250324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1251324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "auto dup tree with rule root and list labels" do 1252324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AutoDupTreeWithRuleRootAndListLabels::Lexer.new( "a 3" ) 1253324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1254324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AutoDupTreeWithRuleRootAndListLabels::Parser.new( tokens ) 1255324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1256324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1257324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1258324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1259324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AutoDupTreeWithRuleRootAndListLabelsWalker::TreeParser.new( nodes ) 1260324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1261324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1262324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(a 3)" 1263324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1264324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1265324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "auto dup nested tree" do 1266324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = AutoDupNestedTree::Lexer.new( "a b 3" ) 1267324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1268324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = AutoDupNestedTree::Parser.new( tokens ) 1269324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1270324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1271324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1272324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1273324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = AutoDupNestedTreeWalker::TreeParser.new( nodes ) 1274324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1275324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1276324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(a (b 3))" 1277324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1278324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1279324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "delete" do 1280324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = Delete::Lexer.new( "abc" ) 1281324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1282324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = Delete::Parser.new( tokens ) 1283324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1284324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1285324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1286324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1287324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = DeleteWalker::TreeParser.new( nodes ) 1288324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1289324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1290324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "" 1291324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1292324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1293324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "set match no rewrite" do 1294324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = SetMatchNoRewrite::Lexer.new( "abc 34" ) 1295324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1296324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = SetMatchNoRewrite::Parser.new( tokens ) 1297324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1298324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1299324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1300324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1301324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = SetMatchNoRewriteWalker::TreeParser.new( nodes ) 1302324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1303324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1304324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "abc 34" 1305324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1306324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1307324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "set optional match no rewrite" do 1308324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = SetOptionalMatchNoRewrite::Lexer.new( "abc 34" ) 1309324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1310324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = SetOptionalMatchNoRewrite::Parser.new( tokens ) 1311324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1312324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1313324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1314324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1315324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = SetOptionalMatchNoRewriteWalker::TreeParser.new( nodes ) 1316324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1317324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1318324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "abc 34" 1319324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1320324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1321324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "set match no rewrite level2" do 1322324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = SetMatchNoRewriteLevel2::Lexer.new( "abc 34" ) 1323324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1324324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = SetMatchNoRewriteLevel2::Parser.new( tokens ) 1325324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1326324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1327324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1328324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1329324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = SetMatchNoRewriteLevel2Walker::TreeParser.new( nodes ) 1330324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1331324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1332324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(abc 34)" 1333324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1334324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1335324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "set match no rewrite level2 root" do 1336324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = SetMatchNoRewriteLevel2Root::Lexer.new( "abc 34" ) 1337324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1338324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = SetMatchNoRewriteLevel2Root::Parser.new( tokens ) 1339324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1340324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1341324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1342324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1343324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = SetMatchNoRewriteLevel2RootWalker::TreeParser.new( nodes ) 1344324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1345324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1346324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(abc 34)" 1347324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1348324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1349324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite mode combined rewrite and auto" do 1350324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1351324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser_test = proc do |input, expected_output| 1352324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteModeCombinedRewriteAndAuto::Lexer.new( input ) 1353324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1354324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteModeCombinedRewriteAndAuto::Parser.new( tokens ) 1355324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1356324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1357324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1358324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteModeCombinedRewriteAndAutoWalker::TreeParser.new( nodes ) 1359324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.a 1360324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1361324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == expected_output 1362324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1363324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1364324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser_test[ 'abc 34', '(ick 34)' ] 1365324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser_test[ '34', '34' ] 1366324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1367324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1368324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite mode flat tree" do 1369324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteModeFlatTree::Lexer.new( "abc 34" ) 1370324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1371324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteModeFlatTree::Parser.new( tokens ) 1372324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1373324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1374324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1375324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1376324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteModeFlatTreeWalker::TreeParser.new( nodes ) 1377324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1378324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1379324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "abc 1" 1380324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1381324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1382324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite mode chain rule flat tree" do 1383324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteModeChainRuleFlatTree::Lexer.new( "abc 34" ) 1384324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1385324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteModeChainRuleFlatTree::Parser.new( tokens ) 1386324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1387324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1388324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1389324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1390324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteModeChainRuleFlatTreeWalker::TreeParser.new( nodes ) 1391324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1392324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1393324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "34 abc" 1394324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1395324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1396324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite mode chain rule tree" do 1397324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteModeChainRuleTree::Lexer.new( "abc 34" ) 1398324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1399324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteModeChainRuleTree::Parser.new( tokens ) 1400324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1401324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1402324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1403324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1404324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteModeChainRuleTreeWalker::TreeParser.new( nodes ) 1405324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1406324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1407324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "34" 1408324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1409324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1410324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite mode chain rule tree2" do 1411324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteModeChainRuleTree2::Lexer.new( "abc 34" ) 1412324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1413324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteModeChainRuleTree2::Parser.new( tokens ) 1414324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1415324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1416324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1417324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1418324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteModeChainRuleTree2Walker::TreeParser.new( nodes ) 1419324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1420324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1421324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "34" 1422324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1423324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1424324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite mode chain rule tree3" do 1425324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteModeChainRuleTree3::Lexer.new( "boo abc 34" ) 1426324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1427324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteModeChainRuleTree3::Parser.new( tokens ) 1428324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1429324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1430324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1431324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1432324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteModeChainRuleTree3Walker::TreeParser.new( nodes ) 1433324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1434324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1435324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "boo 34" 1436324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1437324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1438324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite mode chain rule tree4" do 1439324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteModeChainRuleTree4::Lexer.new( "boo abc 34" ) 1440324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1441324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteModeChainRuleTree4::Parser.new( tokens ) 1442324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1443324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1444324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1445324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1446324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteModeChainRuleTree4Walker::TreeParser.new( nodes ) 1447324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1448324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1449324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(boo 34)" 1450324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1451324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1452324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite mode chain rule tree5" do 1453324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteModeChainRuleTree5::Lexer.new( "boo abc 34" ) 1454324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1455324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteModeChainRuleTree5::Parser.new( tokens ) 1456324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1457324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1458324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1459324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1460324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteModeChainRuleTree5Walker::TreeParser.new( nodes ) 1461324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1462324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1463324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(boo 34)" 1464324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1465324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1466324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite of rule ref" do 1467324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteOfRuleRef::Lexer.new( "abc 34" ) 1468324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1469324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteOfRuleRef::Parser.new( tokens ) 1470324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1471324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1472324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1473324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1474324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteOfRuleRefWalker::TreeParser.new( nodes ) 1475324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1476324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1477324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "abc 34" 1478324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1479324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1480324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite of rule ref root" do 1481324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteOfRuleRefRoot::Lexer.new( "abc 12 34" ) 1482324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1483324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteOfRuleRefRoot::Parser.new( tokens ) 1484324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1485324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1486324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1487324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1488324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteOfRuleRefRootWalker::TreeParser.new( nodes ) 1489324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1490324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1491324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(12 (abc 34))" 1492324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1493324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1494324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite of rule ref root labeled" do 1495324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteOfRuleRefRootLabeled::Lexer.new( "abc 12 34" ) 1496324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1497324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteOfRuleRefRootLabeled::Parser.new( tokens ) 1498324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1499324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1500324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1501324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1502324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteOfRuleRefRootLabeledWalker::TreeParser.new( nodes ) 1503324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1504324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1505324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(12 (abc 34))" 1506324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1507324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1508324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite of rule ref root list labeled" do 1509324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteOfRuleRefRootListLabeled::Lexer.new( "abc 12 34" ) 1510324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1511324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteOfRuleRefRootListLabeled::Parser.new( tokens ) 1512324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1513324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1514324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1515324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1516324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteOfRuleRefRootListLabeledWalker::TreeParser.new( nodes ) 1517324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1518324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1519324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(12 (abc 34))" 1520324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1521324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1522324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite of rule ref child" do 1523324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteOfRuleRefChild::Lexer.new( "abc 34" ) 1524324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1525324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteOfRuleRefChild::Parser.new( tokens ) 1526324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1527324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1528324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1529324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1530324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteOfRuleRefChildWalker::TreeParser.new( nodes ) 1531324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1532324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1533324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(34 34)" 1534324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1535324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1536324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite of rule ref label" do 1537324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteOfRuleRefLabel::Lexer.new( "abc 34" ) 1538324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1539324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteOfRuleRefLabel::Parser.new( tokens ) 1540324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1541324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1542324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1543324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1544324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteOfRuleRefLabelWalker::TreeParser.new( nodes ) 1545324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1546324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1547324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(34 34)" 1548324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1549324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1550324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite of rule ref list label" do 1551324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteOfRuleRefListLabel::Lexer.new( "abc 34" ) 1552324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1553324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteOfRuleRefListLabel::Parser.new( tokens ) 1554324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1555324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1556324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1557324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1558324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteOfRuleRefListLabelWalker::TreeParser.new( nodes ) 1559324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1560324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1561324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(34 34)" 1562324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1563324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1564324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "rewrite mode with predicated rewrites" do 1565324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = RewriteModeWithPredicatedRewrites::Lexer.new( "abc 34" ) 1566324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1567324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = RewriteModeWithPredicatedRewrites::Parser.new( tokens ) 1568324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1569324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1570324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1571324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1572324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = RewriteModeWithPredicatedRewritesWalker::TreeParser.new( nodes ) 1573324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1574324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1575324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(root (ick 34))" 1576324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1577324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1578324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "wildcard single node" do 1579324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = WildcardSingleNode::Lexer.new( "abc 34" ) 1580324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1581324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = WildcardSingleNode::Parser.new( tokens ) 1582324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1583324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1584324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1585324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1586324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = WildcardSingleNodeWalker::TreeParser.new( nodes ) 1587324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1588324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1589324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "34" 1590324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1591324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1592324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "wildcard unlabeled single node" do 1593324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = WildcardUnlabeledSingleNode::Lexer.new( "abc 34" ) 1594324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1595324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = WildcardUnlabeledSingleNode::Parser.new( tokens ) 1596324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1597324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1598324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1599324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1600324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = WildcardUnlabeledSingleNodeWalker::TreeParser.new( nodes ) 1601324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1602324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1603324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "abc" 1604324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1605324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1606324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "wildcard grabs subtree" do 1607324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = WildcardGrabsSubtree::Lexer.new( "abc 1 2 3" ) 1608324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1609324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = WildcardGrabsSubtree::Parser.new( tokens ) 1610324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1611324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1612324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1613324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1614324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = WildcardGrabsSubtreeWalker::TreeParser.new( nodes ) 1615324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1616324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1617324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(1 2 3)" 1618324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1619324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1620324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "wildcard grabs subtree2" do 1621324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = WildcardGrabsSubtree2::Lexer.new( "abc 1 2 3" ) 1622324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1623324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = WildcardGrabsSubtree2::Parser.new( tokens ) 1624324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1625324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1626324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1627324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1628324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = WildcardGrabsSubtree2Walker::TreeParser.new( nodes ) 1629324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1630324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1631324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(1 2 3)" 1632324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1633324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1634324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "wildcard list label" do 1635324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = WildcardListLabel::Lexer.new( "1 2 3" ) 1636324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1637324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = WildcardListLabel::Parser.new( tokens ) 1638324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1639324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1640324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1641324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1642324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = WildcardListLabelWalker::TreeParser.new( nodes ) 1643324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1644324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1645324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "1 2 3" 1646324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1647324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1648324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver example "wildcard list label2" do 1649324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver lexer = WildcardListLabel2::Lexer.new( "1 2 3" ) 1650324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver tokens = ANTLR3::CommonTokenStream.new( lexer ) 1651324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver parser = WildcardListLabel2::Parser.new( tokens ) 1652324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1653324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = parser.a 1654324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes = ANTLR3::AST::CommonTreeNodeStream.new( result.tree ) 1655324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver nodes.token_stream = tokens 1656324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver walker = WildcardListLabel2Walker::TreeParser.new( nodes ) 1657324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver result = walker.s 1658324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree = result.tree.nil? ? '' : result.tree.inspect 1659324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver stree.should == "(2 3) (2 3)" 1660324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 1661324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 1662324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend 1663