package org.scribble.parser.ast; import org.antlr.runtime.tree.CommonTree; import org.scribble.ast.DataTypeDecl; import org.scribble.ast.AstFactoryImpl; import org.scribble.ast.name.qualified.DataTypeNode; import org.scribble.parser.ScribParser; import org.scribble.parser.ast.name.AntlrSimpleName; public class AntlrDataTypeDecl { 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 DataTypeDecl parseDataTypeDecl(ScribParser parser, CommonTree ct) { CommonTree tmp1 = getSchemaChild(ct); String schema = AntlrSimpleName.getName(tmp1); CommonTree tmp2 = getExtNameChild(ct); String extName = AntlrExtIdentifier.getName(tmp2); CommonTree tmp3 = getExtNameChild(ct); String source = AntlrExtIdentifier.getName(tmp3); DataTypeNode alias = AntlrSimpleName.toDataTypeNameNode(getAliasChild(ct)); return AstFactoryImpl.FACTORY.DataTypeDecl(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(); } }