You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.1 KiB
66 lines
1.1 KiB
grammar TestActionFeatures;
|
|
|
|
options {
|
|
language=CSharp3;
|
|
TokenLabelType=CommonToken;
|
|
output=AST;
|
|
ASTLabelType=CommonTree;
|
|
}
|
|
|
|
@lexer::namespace{Antlr3.Runtime.Test}
|
|
@parser::namespace{Antlr3.Runtime.Test}
|
|
|
|
@parser::header{using Console = System.Console;}
|
|
|
|
/*
|
|
* Parser Rules
|
|
*/
|
|
|
|
public
|
|
compileUnit
|
|
: EOF
|
|
;
|
|
|
|
// SET_DYNAMIC_SCOPE_ATTR
|
|
|
|
setDynamicScopeAttr
|
|
scope {int i;}
|
|
: EOF {$setDynamicScopeAttr::i=3; $setDynamicScopeAttr[0]::i=3; $setDynamicScopeAttr[-0]::i=3;}
|
|
;
|
|
|
|
// DYNAMIC_SCOPE_ATTR
|
|
|
|
dynamicScopeAttr
|
|
scope {int i;}
|
|
: EOF {Console.WriteLine($dynamicScopeAttr::i);}
|
|
;
|
|
|
|
// DYNAMIC_NEGATIVE_INDEXED_SCOPE_ATTR
|
|
|
|
dynamicNegativeIndexedScopeAttr
|
|
scope {int i;}
|
|
: EOF {Console.WriteLine($dynamicNegativeIndexedScopeAttr[-1]::i);}
|
|
;
|
|
|
|
// DYNAMIC_ABSOLUTE_INDEXED_SCOPE_ATTR
|
|
|
|
dynamicAbsoluteIndexedScopeAttr
|
|
scope {int i;}
|
|
: EOF {Console.WriteLine($dynamicNegativeIndexedScopeAttr[0]::i);}
|
|
;
|
|
|
|
// ISOLATED_DYNAMIC_SCOPE
|
|
|
|
isolatedDynamicScope
|
|
scope {int i;}
|
|
: EOF {Console.WriteLine($isolatedDynamicScope.Count);}
|
|
;
|
|
|
|
/*
|
|
* Lexer Rules
|
|
*/
|
|
|
|
WS
|
|
: ' '
|
|
;
|