key_table.put("disjoint", new Integer(Sym.DISJOINT));
//Keywords for coarse-grain parallelization
key_table.put("sese", new Integer(Sym.SESE));
+ key_table.put("rblock", new Integer(Sym.RBLOCK));
}
}
//"interface",
"isavailable",
"long",
- "native", "new", "optional", "package", "private", "protected", "public",
- "return", "scratch", "sese", "short", "static", "strictfp", "super", "switch", "synchronized",
+ "native", "new", "optional", "package", "private", "protected", "public",
+ "rblock", "return",
+ "scratch", "sese", "short", "static", "strictfp", "super", "switch", "synchronized",
"tag", "task", "taskexit", //keywords for failure aware computation
"this", "throw", "throws", "transient", "try", "void",
"volatile", "while"
//coarse-grain parallelization
terminal SESE;
+terminal RBLOCK;
non terminal ParseNode sese_statement;
pn.addChild("identifier").addChild(id);
RESULT=pn;
:}
+ | RBLOCK block:blk {:
+ ParseNode pn = new ParseNode("sese");
+ pn.addChild("body").addChild(blk);
+ RESULT=pn;
+ :}
+ | RBLOCK variable_declarator_id:id block:blk {:
+ ParseNode pn = new ParseNode("sese");
+ pn.addChild("body").addChild(blk);
+ pn.addChild("identifier").addChild(id);
+ RESULT=pn;
+ :}
;
//try_statement ::=
// TRY block catches