package org.scribble.parser.ast;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import org.antlr.runtime.tree.CommonTree;
import org.scribble.ast.AstFactoryImpl;
import org.scribble.ast.NonRoleParamDecl;
import org.scribble.ast.NonRoleParamDeclList;
import org.scribble.parser.ScribParser;
import org.scribble.parser.util.ScribParserUtil;
import org.scribble.sesstype.kind.NonRoleParamKind;
import org.scribble.util.ScribParserException;
public class AntlrNonRoleParamDeclList
{
public static NonRoleParamDeclList parseNonRoleParamDeclList(ScribParser parser, CommonTree ct) throws ScribParserException
{
List<NonRoleParamDecl<NonRoleParamKind>> pds = new LinkedList<>();
for (CommonTree pd : getParamDeclChildren(ct))
{
NonRoleParamDecl<? extends NonRoleParamKind> parsed = (NonRoleParamDecl<?>) parser.parse(pd);
@SuppressWarnings("unchecked") // OK: the node is immutable -- will never "rewrite" the generic value (the kind) in it
NonRoleParamDecl<NonRoleParamKind> tmp = (NonRoleParamDecl<NonRoleParamKind>) parsed;
pds.add(tmp);
}
return AstFactoryImpl.FACTORY.NonRoleParamDeclList(ct, pds);
}
public static final List<CommonTree> getParamDeclChildren(CommonTree ct)
{
return (ct.getChildCount() == 0)
? Collections.emptyList()
: ScribParserUtil.toCommonTreeList(ct.getChildren());
}
}