/*
* Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package org.visage.tools.tree.xml;
import org.visage.api.tree.TypeTree.Cardinality;
import org.visage.api.VisageBindStatus;
import java.util.HashMap;
import java.util.Map;
/**
* Element, attribute names and values, namespace URI used in XML
* representations of ASTs.
*
* @author A. Sundararajan
*/
public final class Constants {
// Don't create me!
private Constants() {
}
// XML namespace URI used for AST XML elements
public static final String VISAGEASTXML_NS = "http://visage.org";
public static final String VISAGEASTXML_PREFIX = "visage:";
// doc comments
public static final String DOC_COMMENT = "doc-comment";
// script file
public static final String VISAGE = "visage";
public static final String FILE = "file";
// package and import
public static final String PACKAGE = "package";
public static final String IMPORT = "import";
// statements
public static final String STATEMENT = "stmt";
public static final String STATEMENTS = "stmts";
public static final String EMPTY = "empty";
public static final String BREAK = "break";
public static final String CONTINUE = "continue";
public static final String TRY = "try";
public static final String CATCH = "catch";
public static final String CATCHES = "catches";
public static final String FINALLY = "finally";
public static final String THROW = "throw";
public static final String RETURN = "return";
// literals
public static final String INT_LITERAL = "int-literal";
public static final String LONG_LITERAL = "long-literal";
public static final String FLOAT_LITERAL = "float-literal";
public static final String DOUBLE_LITERAL = "double-literal";
public static final String STRING_LITERAL = "string-literal";
public static final String TIME_LITERAL = "time-literal";
public static final String LENGTH_LITERAL = "length-literal";
public static final String ANGLE_LITERAL = "angle-literal";
public static final String COLOR_LITERAL = "color-literal";
public static final String TRUE = "true";
public static final String FALSE = "false";
public static final String VALUE = "value";
public static final String NULL = "null";
// types
public static final String TYPE = "type";
public static final String TYPE_CLASS = "type-class";
public static final String TYPE_FUNCTIONAL = "type-functional";
public static final String TYPE_ARRAY = "type-array";
public static final String TYPE_UNKNOWN = "type-unknown";
public static final String TYPE_ANY = "type-any";
public static final String CARDINALITY = "cardinality";
// expressions
public static final String PARENTHESIS = "paren";
public static final String ASSIGNMENT = "assignment";
public static final String LEFT = "left";
public static final String RIGHT = "right";
public static final String CAST = "cast";
public static final String INSTANCEOF = "instanceof";
public static final String INDEX = "index";
public static final String SELECT = "select";
public static final String MEMBER = "member";
public static final String INVOKE = "invoke";
public static final String METHOD = "method";
public static final String ARGUMENTS = "args";
public static final String INDEXOF = "indexof";
public static final String STRING_EXPRESSION = "string-expr";
public static final String FORMAT = "format";
public static final String PART = "part";
public static final String STR_TRANS_KEY = "translation-key";
public static final String NEW = "new";
public static final String OBJECT_LITERAL = "object-literal";
public static final String OBJECT_LITERAL_INIT = "object-literal-init";
public static final String BIND_STATUS = "bind-status";
public static final String SEQUENCE_INDEXED = "seq-indexed";
public static final String SEQUENCE_SLICE = "seq-slice";
public static final String SLICE_END_KIND = "slice-end-kind";
public static final String END_EXCLUSIVE = "exclusive";
public static final String SEQUENCE_INSERT = "seq-insert";
public static final String SEQUENCE_DELETE = "seq-delete";
public static final String ELEMENT = "elem";
public static final String IF = "if";
public static final String TEST = "test";
public static final String THEN = "then";
public static final String ELSE = "else";
public static final String FOR = "for";
public static final String WHERE = "where";
public static final String IN = "in";
public static final String WHILE = "while";
public static final String MISSING_EXPRESSION = "missing-expr";
public static final String INVALIDATE = "invalidate";
// interpolation, keyframes
public static final String KEYFRAME_LITERAL = "keyframe-literal";
public static final String INTERPOLATION_VALUES = "interpolation-values";
public static final String START_DURATION = "start-dur";
public static final String INTERPOLATE = "interpolate";
public static final String TRIGGER = "trigger";
public static final String INTERPOLATE_VALUE = "interpolate-value";
public static final String ATTRIBUTE = "attribute";
public static final String INTERPOLATION = "interpolation";
// declarations and misc.
public static final String NAME = "name";
public static final String EXTENDS = "extends";
public static final String MEMBERS = "members";
public static final String PARAMETERS = "params";
public static final String RETURN_TYPE = "return-type";
public static final String INITIAL_VALUE = "init-value";
public static final String EXPRESSION = "expr";
public static final String LABEL = "label";
public static final String CLASS = "class";
public static final String IDENTIFIER = "ident";
public static final String KIND = "kind";
public static final String MODIFIERS = "modifiers";
public static final String ERROR = "error";
public static final String OTHER = "other";
public static final String DEFINITIONS = "defs";
public static final String ANON_FUNCTION = "anon-function";
public static final String INIT = "init";
public static final String POSTINIT = "postinit";
public static final String OVERRIDE_VAR = "override-var";
public static final String VAR = "var";
public static final String DEF = "def";
public static final String OLD_VALUE = "old-value";
public static final String ON_REPLACE = "on-replace";
public static final String ON_INVALIDATE = "on-invalidate";
public static final String FIRST_INDEX = "first-index";
public static final String LAST_INDEX = "last-index";
public static final String NEW_ELEMENTS = "new-elements";
public static final String BLOCK_EXPRESSION = "block";
public static final String BOUND = "bound";
public static final String FUNCTION = "function";
public static final String SEQUENCE_EMPTY = "seq-empty";
public static final String SEQUENCE_RANGE = "seq-range";
public static final String SEQUENCE_EXPLICIT = "seq-explicit";
public static final String LOWER = "lower";
public static final String UPPER = "upper";
public static final String STEP = "step";
public static final String EXCLUSIVE = "exclusive";
public static final String SEQUENCE = "seq";
public static final String ITEMS = "items";
public static final String FIRST = "first";
public static final String LAST = "last";
public static final String BODY = "body";
public static final String SIZEOF = "sizeof";
public static final String FILE_EXT = ".visage";
public static final String FLAGS = "flags";
public static final String LIST_ITEM = "li";
public static final String POSITION = "pos";
public static final String END_POSITION = "end-pos";
// symbols and types. symbols and types are "networks" as
// opposed to trees. So, we generate "id" and idref pattern to
// refer (possibly mutually) between symbols and types.
public static final String SYMBOLS = "symbols";
public static final String SYMBOL = "symbol";
public static final String OWNER = "owner";
public static final String FULL_NAME = "full-name";
public static final String TYPES = "types";
public static final String ID = "id";
public static final String SYMREF = "symref";
public static final String TYPEREF = "typeref";
public static final String SYMID_PREFIX = "sym-";
public static final String TYPEID_PREFIX = "type-";
// attribute types used
public static final String ATTR_ID = "ID";
public static final String ATTR_IDREF = "IDREF";
public static final String ATTR_CDATA = "CDATA";
// Java access flags applicable to Visage
public static final String ABSTRACT = "abstract";
public static final String PROTECTED = "protected";
public static final String PUBLIC = "public";
// Visage specific access flags
public static final String DEFAULT = "default";
public static final String PUBLIC_INIT = "public-init";
public static final String PUBLIC_READ = "public-read";
public static final String PACKAGE_ACCESS = "package";
public static final String SCRIPT_PRIVATE = "script-private";
public static final String OVERRIDE = "override";
public static final String MIXIN = "mixin";
// enumeration constants are written with XML naming
// conventions. i.e., replacing '_' with '-'
public static String enumToName(Enum e) {
return e.name().toLowerCase().replace('_', '-');
}
public static <T extends Enum<T>> T nameToEnum(Class<T> type, String str) {
return Enum.valueOf(type, str.toUpperCase().replace('-', '_'));
}
public static String cardinalityToString(Cardinality c) {
return (c == null)? null : enumToName(c);
}
private static Map<VisageBindStatus, String> bindStatus2String = new HashMap<VisageBindStatus, String>();
static {
bindStatus2String.put(VisageBindStatus.UNBOUND, "unbound");
bindStatus2String.put(VisageBindStatus.UNIDIBIND, "bind");
bindStatus2String.put(VisageBindStatus.BIDIBIND, "bind-with-inverse");
}
public static String bindStatusToString(VisageBindStatus bs) {
return (bs == null)? null : bindStatus2String.get(bs);
}
}