package org.scribble.parser.ast; import org.antlr.runtime.tree.CommonTree; import org.scribble.ast.MessageSigNameDecl; import org.scribble.ast.AstFactoryImpl; import org.scribble.ast.name.qualified.MessageSigNameNode; import org.scribble.parser.ScribParser; import org.scribble.parser.ast.name.AntlrSimpleName; // FIXME: factor out with AntlrDataTypeDecl public class AntlrMessageSigDecl { public static final int SCHEMA_CHILD_INDEX = 0; public static final int EXTNAME_CHILD_INDEX = 1; public static final int SOURCE_CHILD_INDEX = 2; public static final int ALIAS_CHILD_INDEX = 3; public static MessageSigNameDecl parseMessageSigDecl(ScribParser parser, CommonTree ct) { CommonTree tmp1 = getSchemaChild(ct); String schema = AntlrSimpleName.getName(tmp1); CommonTree tmp2 = getExtNameChild(ct); String extName = AntlrExtIdentifier.getName(tmp2); CommonTree tmp3 = getSourceChild(ct); String source = AntlrExtIdentifier.getName(tmp3); MessageSigNameNode alias = AntlrSimpleName.toMessageSigNameNode(getAliasChild(ct)); return AstFactoryImpl.FACTORY.MessageSigNameDecl(ct, schema, extName, source, alias); } public static CommonTree getSchemaChild(CommonTree ct) { return (CommonTree) ct.getChild(SCHEMA_CHILD_INDEX); } public static CommonTree getExtNameChild(CommonTree ct) { return (CommonTree) ct.getChild(EXTNAME_CHILD_INDEX); } public static CommonTree getSourceChild(CommonTree ct) { return (CommonTree) ct.getChild(SOURCE_CHILD_INDEX); } public static CommonTree getAliasChild(CommonTree ct) { return (CommonTree) ct.getChild(ALIAS_CHILD_INDEX); } public static CommonTree getModuleParent(CommonTree ct) { return (CommonTree) ct.getParent(); } }