package org.scribble.parser.ast.global;
import java.util.List;
import org.antlr.runtime.tree.CommonTree;
import org.scribble.ast.global.GInterruptible;
import org.scribble.parser.ScribParser;
import org.scribble.parser.ast.name.AntlrSimpleName;
import org.scribble.parser.util.ScribParserUtil;
import org.scribble.util.ScribParserException;
public class AntlrGInterruptible
{
public static final int SCOPE_CHILD_INDEX = 0;
public static final int BLOCK_CHILD_INDEX = 1;
public static final int INTERRUPT_CHILDREN_START_INDEX = 2;
public static GInterruptible parseGInterruptible(ScribParser parser, CommonTree ct) throws ScribParserException
{
/*GProtocolBlock block = (GProtocolBlock) parser.parse(getBlockChild(ct));
/*List<GInterrupt> interrs =
getInterruptChildren(ct).stream().map((interr) -> (GInterrupt) parser.parse(interr)).collect(Collectors.toList());
* /
List<GInterrupt> interrs = new LinkedList<>();
for (CommonTree interr : getInterruptChildren(ct))
{
interrs.add((GInterrupt) parser.parse(interr));
}
if (isScopeImplicit(ct))
{
//return new GInterruptible(block, interrs);
return null;
}
ScopeNode scope = AntlrSimpleName.toScopeNode(getScopeChild(ct));
//return new GInterruptible(scope, block, interrs);*/
return null;
}
public static boolean isScopeImplicit(CommonTree ct)
{
return AntlrSimpleName.toScopeNode(ct) == null;
}
public static CommonTree getScopeChild(CommonTree ct)
{
return (CommonTree) ct.getChild(SCOPE_CHILD_INDEX);
}
public static CommonTree getBlockChild(CommonTree ct)
{
return (CommonTree) ct.getChild(BLOCK_CHILD_INDEX);
}
public static List<CommonTree> getInterruptChildren(CommonTree ct)
{
List<?> children = ct.getChildren();
return ScribParserUtil.toCommonTreeList(children.subList(INTERRUPT_CHILDREN_START_INDEX, children.size()));
}
}