use of ast.Expression.Catch in project L42 by ElvisResearchGroup.
the class ToAst method visitCurlyBlock.
@Override
public Expression visitCurlyBlock(CurlyBlockContext ctx) {
Doc doc = parseDoc(ctx.docsOpt());
List<BlockContent> contents = new ArrayList<BlockContent>();
for (BbContext b : ctx.bb()) {
List<VarDec> decs = new ArrayList<VarDec>();
for (DContext d : b.d()) {
decs.add(parseVDec(d));
}
assert b.ks() != null;
List<Catch> _catch = parseKs(b.ks());
contents.add(new BlockContent(decs, _catch));
}
return new Expression.CurlyBlock(position(ctx), doc, contents);
}
use of ast.Expression.Catch in project L42 by ElvisResearchGroup.
the class ToAst method visitRoundBlockAux.
private Expression visitRoundBlockAux(ParserRuleContext ctx, DocsOptContext docsOpt, List<BbContext> bB, ETopContext eTop) {
Doc doc = parseDoc(docsOpt);
List<BlockContent> contents = new ArrayList<BlockContent>();
for (BbContext b : bB) {
List<VarDec> decs = new ArrayList<VarDec>();
for (DContext d : b.d()) {
decs.add(parseVDec(d));
}
assert b.ks() != null;
List<Catch> _catch = parseKs(b.ks());
contents.add(new BlockContent(decs, _catch));
}
Expression inner = eTop.accept(this);
return new Expression.RoundBlock(position(ctx), doc, inner, contents);
}
use of ast.Expression.Catch in project L42 by ElvisResearchGroup.
the class InjectionOnCore method visit.
public ExpCore visit(Expression.RoundBlock s) {
Doc doc = s.getDoc();
assert s.getContents().size() <= 1 : s.getContents();
List<Dec> decs = new ArrayList<Dec>();
List<ExpCore.Block.On> ons = new ArrayList<ExpCore.Block.On>();
ExpCore inner = s.getInner().accept(this);
if (s.getContents().size() == 1) {
Expression.BlockContent c = s.getContents().get(0);
for (Ast.VarDec d : c.getDecs()) {
assert d instanceof Ast.VarDecXE : d;
Ast.VarDecXE sugarDec = (Ast.VarDecXE) d;
//assert sugarDec.getT().isPresent() :sugarDec;
Optional<Type> t = sugarDec.getT();
String x = sugarDec.getX();
ExpCore e = sugarDec.getInner().accept(this);
decs.add(new Dec(sugarDec.isVar(), t, x, e));
}
//END FOR DECS
;
for (Catch k : c.get_catch()) {
assert k instanceof Expression.Catch1;
Expression.Catch1 k1 = (Expression.Catch1) k;
SignalKind kind = k1.getKind();
String x = k1.getX();
assert x.length() >= 1;
ons.add(new ExpCore.Block.On(kind, x, k1.getT(), lift(k1.getInner()), k1.getP()));
}
return new Block(doc, decs, inner, ons, s.getP());
}
return new Block(doc, decs, inner, Collections.emptyList(), s.getP());
}
Aggregations