package org.scribble.parser.ast.name; import org.antlr.runtime.tree.CommonTree; import org.scribble.ast.AstFactoryImpl; import org.scribble.ast.name.qualified.DataTypeNode; import org.scribble.ast.name.qualified.GProtocolNameNode; import org.scribble.ast.name.qualified.LProtocolNameNode; import org.scribble.ast.name.qualified.MessageSigNameNode; import org.scribble.ast.name.qualified.ModuleNameNode; import org.scribble.sesstype.kind.DataTypeKind; import org.scribble.sesstype.kind.Global; import org.scribble.sesstype.kind.Local; import org.scribble.sesstype.kind.ModuleKind; import org.scribble.sesstype.kind.SigKind; public class AntlrQualifiedName { protected static String[] getElements(CommonTree ct) { int count = ct.getChildCount(); String[] names = new String[count]; for (int i = 0; i < count; i++) { names[i] = AntlrSimpleName.getName((CommonTree) ct.getChild(i)); } return names; } public static ModuleNameNode toModuleNameNode(CommonTree ct) { return (ModuleNameNode) AstFactoryImpl.FACTORY.QualifiedNameNode(ct, ModuleKind.KIND, getElements(ct)); } public static DataTypeNode toDataTypeNameNode(CommonTree ct) { return (DataTypeNode) AstFactoryImpl.FACTORY.QualifiedNameNode(ct, DataTypeKind.KIND, getElements(ct)); } public static MessageSigNameNode toMessageSigNameNode(CommonTree ct) { return (MessageSigNameNode) AstFactoryImpl.FACTORY.QualifiedNameNode(ct, SigKind.KIND, getElements(ct)); } public static GProtocolNameNode toGProtocolNameNode(CommonTree ct) { return (GProtocolNameNode) AstFactoryImpl.FACTORY.QualifiedNameNode(ct, Global.KIND, getElements(ct)); } public static LProtocolNameNode toLProtocolNameNode(CommonTree ct) { return (LProtocolNameNode) AstFactoryImpl.FACTORY.QualifiedNameNode(ct, Local.KIND, getElements(ct)); } }