package org.scribble.parser.ast; import org.antlr.runtime.tree.CommonTree; import org.scribble.ast.ImportModule; import org.scribble.ast.AstFactoryImpl; import org.scribble.ast.name.qualified.ModuleNameNode; import org.scribble.parser.ScribParser; import org.scribble.parser.ast.name.AntlrQualifiedName; import org.scribble.parser.ast.name.AntlrSimpleName; public class AntlrImportModule { public static final int MODULENAME_CHILD_INDEX = 0; public static final int ALIAS_CHILD_INDEX = 1; private static final String EMPTY_ALIAS = "EMPTY_ALIAS"; public static ImportModule parseImportModule(ScribParser parser, CommonTree ct) { ModuleNameNode fmn = AntlrQualifiedName.toModuleNameNode(getModuleNameChild(ct)); ModuleNameNode alias = (hasAlias(ct)) ? AntlrSimpleName.toModuleNameNode(getAliasChild(ct)) : null; return AstFactoryImpl.FACTORY.ImportModule(ct, fmn, alias); } public static CommonTree getModuleNameChild(CommonTree ct) { return (CommonTree) ct.getChild(MODULENAME_CHILD_INDEX); } public static CommonTree getAliasChild(CommonTree ct) { return (CommonTree) ct.getChild(ALIAS_CHILD_INDEX); } public static boolean hasAlias(CommonTree ct) { return !ct.getChild(ALIAS_CHILD_INDEX).getText().equals(EMPTY_ALIAS); } }