mirror of
https://github.com/twiglet/cs2j.git
synced 2025-01-18 13:15:17 +01:00
various so that we can chomp through monodevelop. mostly it seems to be workarounds for antlr :(
This commit is contained in:
parent
c457c5c6f8
commit
ac2417a6c6
@ -236,11 +236,13 @@ scope TypeContext {
|
||||
|
||||
protected CommonTree mkArgsFromParams(IToken tok, CommonTree pars) {
|
||||
CommonTree root = (CommonTree)adaptor.Nil;
|
||||
root = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(ARGS, tok, "ARGS"), root);
|
||||
if (adaptor.GetChildCount(pars) > 0) {
|
||||
root = (CommonTree)adaptor.BecomeRoot((CommonTree)adaptor.Create(ARGS, tok, "ARGS"), root);
|
||||
|
||||
// take every second child
|
||||
for (int i = 1; i < adaptor.GetChildCount(pars); i+=2) {
|
||||
adaptor.AddChild(root, dupTree((CommonTree)adaptor.GetChild(pars, i)));
|
||||
// take every second child
|
||||
for (int i = 1; i < adaptor.GetChildCount(pars); i+=2) {
|
||||
adaptor.AddChild(root, dupTree((CommonTree)adaptor.GetChild(pars, i)));
|
||||
}
|
||||
}
|
||||
root = (CommonTree)adaptor.RulePostProcessing(root);
|
||||
return root;
|
||||
@ -1635,7 +1637,7 @@ fixed_pointer_initializer:
|
||||
unsafe_statement:
|
||||
'unsafe'^ block;
|
||||
labeled_statement[bool isStatementListCtxt]:
|
||||
identifier ':'^ statement[isStatementListCtxt] ;
|
||||
identifier ':' statement[isStatementListCtxt] ;
|
||||
declaration_statement:
|
||||
(local_variable_declaration
|
||||
| local_constant_declaration) ';' ;
|
||||
@ -1759,7 +1761,7 @@ finally_clause:
|
||||
checked_statement:
|
||||
'checked' block ;
|
||||
unchecked_statement:
|
||||
'unchecked' block ;
|
||||
'unchecked' block -> ^(UNCHECKED block);
|
||||
lock_statement:
|
||||
'lock' '(' expression ')' embedded_statement[/* isStatementListCtxt */ false] ;
|
||||
// TODO: Can we avoid surrounding this with braces if not needed?
|
||||
@ -1773,7 +1775,7 @@ using_statement[bool isStatementListCtxt]
|
||||
AddToImports("CS2JNet.System.Disposable"); }
|
||||
f=magicFinally[$c.token, disposers]
|
||||
magicTry[$u.token, state.backtracking == 0 ? embeddedStatementToBlock($u.token, $embedded_statement.tree) : null, null, $f.tree]
|
||||
-> {isStatementListCtxt}? OPEN_BRACE[$u.token, "{"] resource_acquisition SEMI[$c.token, ";"] magicTry CLOSE_BRACE[$u.token, "}"]
|
||||
-> {!isStatementListCtxt}? OPEN_BRACE[$u.token, "{"] resource_acquisition SEMI[$c.token, ";"] magicTry CLOSE_BRACE[$u.token, "}"]
|
||||
-> resource_acquisition SEMI[$c.token, ";"] magicTry
|
||||
;
|
||||
resource_acquisition returns [List<string> resourceNames]
|
||||
@ -1785,8 +1787,8 @@ resource_acquisition returns [List<string> resourceNames]
|
||||
IDENTIFIER[$expression.tree.Token, "__newVar"+newVarCtr++] ASSIGN[$expression.tree.Token, "="] expression //SEMI[$expression.tree.Token, ";"]
|
||||
;
|
||||
yield_statement:
|
||||
'yield'^ ('return' expression ';'!
|
||||
| 'break' ';'!) ;
|
||||
'yield' ('return' expression ';' -> ^(YIELD_RETURN expression)
|
||||
| 'break' ';' -> YIELD_BREAK) ;
|
||||
|
||||
///////////////////////////////////////////////////////
|
||||
// Lexar Section
|
||||
|
@ -1215,7 +1215,7 @@ fixed_pointer_initializer:
|
||||
//'&' variable_reference // unary_expression covers this
|
||||
expression;
|
||||
labeled_statement:
|
||||
^(':' identifier statement) -> op(pre={ $identifier.st }, op= { ":" }, post = { $statement.st});
|
||||
identifier ':' statement -> op(pre={ $identifier.st }, op= { ":" }, post = { $statement.st});
|
||||
declaration_statement
|
||||
@init {
|
||||
List<string> preComments = null;
|
||||
@ -1310,7 +1310,7 @@ unchecked_statement
|
||||
@init {
|
||||
StringTemplate someText = null;
|
||||
}:
|
||||
'unchecked' block
|
||||
^(UNCHECKED block)
|
||||
{ someText = %keyword_block();
|
||||
%{someText}.keyword = "unchecked";
|
||||
%{someText}.block = $block.st;
|
||||
@ -1329,14 +1329,11 @@ lock_statement
|
||||
yield_statement
|
||||
@init {
|
||||
StringTemplate someText = null;
|
||||
someText = %yield();
|
||||
}:
|
||||
^('yield' ('return' expression
|
||||
| 'break'
|
||||
| )
|
||||
)
|
||||
{ someText = %yield();
|
||||
%{someText}.exp = $expression.st;
|
||||
} -> unsupported(reason = {"yield statements are not supported"}, text = { someText } )
|
||||
^(YIELD_RETURN expression { %{someText}.exp = $expression.st; })
|
||||
| YIELD_BREAK {%{someText}.exp = "break"; }
|
||||
-> unsupported(reason = {"yield statements are not supported"}, text = { someText } )
|
||||
;
|
||||
|
||||
///////////////////////////////////////////////////////
|
||||
|
@ -1026,7 +1026,7 @@ scope {
|
||||
| predefined_type { $dotNetType = $predefined_type.dotNetType; }
|
||||
| 'this' { $dotNetType = SymTabLookup("this"); }
|
||||
| SUPER { $dotNetType = SymTabLookup("super"); }
|
||||
| (^(d1='.' e1=expression[ObjectType] {expType = $e1.dotNetType; implicitThis = false;} i=identifier)|i=identifier) generic_argument_list? magicInputPeId[$d1.tree,$i.tree,$generic_argument_list.tree]
|
||||
| (^(d1='.' e1=expression[ObjectType] {expType = $e1.dotNetType; implicitThis = false;} i=identifier dgal=generic_argument_list?)|i=identifier dgal=generic_argument_list?) magicInputPeId[$d1.tree,$i.tree,$dgal.tree]
|
||||
{
|
||||
// TODO: generic_argument_list is ignored ....
|
||||
|
||||
@ -2607,7 +2607,7 @@ embedded_statement[bool isStatementListCtxt]
|
||||
| checked_statement
|
||||
| unchecked_statement
|
||||
| lock_statement
|
||||
| yield_statement
|
||||
| yield_statement
|
||||
| ^('unsafe' block)
|
||||
| fixed_statement
|
||||
| expression_statement { emitPrePost = adaptor.GetChildCount($statement::preStatements) > 0 || adaptor.GetChildCount($statement::postStatements) > 0; }
|
||||
@ -2662,7 +2662,7 @@ fixed_pointer_initializer:
|
||||
//'&' variable_reference // unary_expression covers this
|
||||
expression[ObjectType];
|
||||
labeled_statement[bool isStatementListCtxt]:
|
||||
^(':' identifier statement[isStatementListCtxt]) ;
|
||||
identifier ':' statement[isStatementListCtxt] ;
|
||||
declaration_statement:
|
||||
(local_variable_declaration
|
||||
| local_constant_declaration) ';' ;
|
||||
@ -2861,12 +2861,13 @@ finally_clause:
|
||||
checked_statement:
|
||||
'checked' block ;
|
||||
unchecked_statement:
|
||||
'unchecked' block ;
|
||||
^(UNCHECKED block) ;
|
||||
lock_statement:
|
||||
'lock' '(' expression[ObjectType] ')' embedded_statement[/* isStatementListCtxt */ false] ;
|
||||
|
||||
yield_statement:
|
||||
'yield' ('return' expression[ObjectType] ';'
|
||||
| 'break' ';') ;
|
||||
^(YIELD_RETURN expression[ObjectType])
|
||||
| YIELD_BREAK ;
|
||||
|
||||
///////////////////////////////////////////////////////
|
||||
// Lexar Section
|
||||
|
@ -32,6 +32,9 @@ tokens {
|
||||
PARAMS;
|
||||
PARAMS_TYPELESS;
|
||||
SWITCH_SECTION;
|
||||
YIELD_RETURN;
|
||||
YIELD_BREAK;
|
||||
UNCHECKED;
|
||||
|
||||
MONOPLUS;
|
||||
MONOMINUS;
|
||||
|
Loading…
x
Reference in New Issue
Block a user