001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.cnd.editor.makefile;
043:
044: import java.util.HashMap;
045: import org.netbeans.editor.BaseTokenCategory;
046: import org.netbeans.editor.BaseTokenID;
047: import org.netbeans.editor.TokenID;
048: import org.netbeans.editor.BaseImageTokenID;
049: import org.netbeans.editor.TokenContext;
050: import org.netbeans.editor.TokenContextPath;
051:
052: /**
053: * Makefile token-context defines token-ids and token-categories
054: * used in Makefiles.
055: *
056: */
057:
058: public class MakefileTokenContext extends TokenContext {
059:
060: private static int id = 1;
061:
062: // Token category
063: public static final BaseTokenCategory TC_MACROS = new BaseTokenCategory(
064: "macros", id++); // NOI18N
065: public static final BaseTokenCategory TC_MACRO_OPERATORS = new BaseTokenCategory(
066: "macro-operators", id++); // NOI18N
067: public static final BaseTokenCategory TC_RULES = new BaseTokenCategory(
068: "rules", id++); // NOI18N
069: public static final BaseTokenCategory TC_GLOBAL = new BaseTokenCategory(
070: "global-special-characters", id++); // NOI18N
071: public static final BaseTokenCategory TC_TARGET = new BaseTokenCategory(
072: "targets", id++); // NOI18N
073: public static final BaseTokenCategory TC_ERRORS = new BaseTokenCategory(
074: "errors", id++); // NOI18N
075:
076: // Token IDs
077: public static final BaseTokenID IDENTIFIER = new BaseTokenID(
078: "identifier", id++); // NOI18N
079: public static final BaseTokenID WHITESPACE = new BaseTokenID(
080: "whitespace", id++); // NOI18N
081: public static final BaseTokenID TAB = new BaseTokenID("tab", id++); // NOI18N
082: public static final BaseTokenID LINE_COMMENT = new BaseTokenID(
083: "line-comment", id++); // NOI18N
084: public static final BaseTokenID STRING_LITERAL = new BaseTokenID(
085: "string-literal", id++); // NOI18N
086:
087: // Macros
088: public static final BaseTokenID MACRO_LITERAL = new BaseTokenID(
089: "macro-literal", id++, TC_MACROS); // NOI18N
090: public static final BaseImageTokenID MACRO_DOLLAR = new BaseImageTokenID(
091: "dollar", id++, TC_MACROS, "$"); // NOI18N
092: public static final BaseImageTokenID MACRO_DOLAR_REFERENCE = new BaseImageTokenID(
093: "dollar-reference", id++, TC_MACROS, "$$"); // NOI18N
094: public static final BaseImageTokenID MACRO_ESCAPED_DOLLAR = new BaseImageTokenID(
095: "escaped-currency", id++, TC_MACROS, "\\$"); // NOI18N
096: public static final BaseImageTokenID MACRO_LPAREN = new BaseImageTokenID(
097: "left-paran", id++, TC_MACROS, "("); // NOI18N
098: public static final BaseImageTokenID MACRO_RPAREN = new BaseImageTokenID(
099: "right-paran", id++, TC_MACROS, ")"); // NOI18N
100: public static final BaseImageTokenID MACRO_LBRACE = new BaseImageTokenID(
101: "left-brace", id++, TC_MACROS, "{"); // NOI18N
102: public static final BaseImageTokenID MACRO_RBRACE = new BaseImageTokenID(
103: "right-brace", id++, TC_MACROS, "}"); // NOI18N
104: public static final BaseImageTokenID MACRO_COMMAND_SUBSTITUTE = new BaseImageTokenID(
105: "command substitute", id++, TC_MACROS, ":sh"); // NOI18N
106: public static final BaseImageTokenID MACRO_DYN_TARGET_BASENAME = new BaseImageTokenID(
107: "target-basename", id++, TC_MACROS, "$*"); // NOI18N
108: public static final BaseImageTokenID MACRO_DYN_DEPENDENCY_FILENAME = new BaseImageTokenID(
109: "dependency-filename", id++, TC_MACROS, "$<"); // NOI18N
110: public static final BaseImageTokenID MACRO_DYN_CURRENTTARGET = new BaseImageTokenID(
111: "current-target", id++, TC_MACROS, "$@"); // NOI18N
112: public static final BaseImageTokenID MACRO_DYN_DEPENDENCY_LIST = new BaseImageTokenID(
113: "dependency-list", id++, TC_MACROS, "$?"); // NOI18N
114: public static final BaseImageTokenID MACRO_DYN_LIBRARYNAME = new BaseImageTokenID(
115: "library-name", id++, TC_MACROS, "$%"); // NOI18N
116:
117: // Macro Operators
118: public static final BaseImageTokenID MACRO_OP_EQUALS = new BaseImageTokenID(
119: "equals", id++, TC_MACRO_OPERATORS, "="); // NOI18N
120: public static final BaseImageTokenID MACRO_OP_APPEND = new BaseImageTokenID(
121: "append", id++, TC_MACRO_OPERATORS, "+="); // NOI18N
122: public static final BaseImageTokenID MACRO_OP_CONDITIONAL = new BaseImageTokenID(
123: "conditional", id++, TC_MACRO_OPERATORS, ":="); // NOI18N
124:
125: // Rules
126: public static final BaseImageTokenID RULES_PLUS = new BaseImageTokenID(
127: "plus", id++, TC_RULES, "+"); // NOI18N
128: public static final BaseImageTokenID RULES_MINUS = new BaseImageTokenID(
129: "minus", id++, TC_RULES, "-"); // NOI18N
130: public static final BaseImageTokenID RULES_AT = new BaseImageTokenID(
131: "at", id++, TC_RULES, "@"); // NOI18N
132: public static final BaseImageTokenID RULES_QUESTION_MARK = new BaseImageTokenID(
133: "question-mark", id++, TC_RULES, "?"); // NOI18N
134: public static final BaseImageTokenID RULES_EXCLAMATION = new BaseImageTokenID(
135: "exclamation", id++, TC_RULES, "!"); // NOI18N
136:
137: /**
138: * SC_POUND in here is just a place holder to show that it is a special character
139: * the syntax highlighting for exclamations are handled in LINE_COMMENT
140: */
141: public static final BaseImageTokenID GLOBAL_POUND = new BaseImageTokenID(
142: "pound", id++, TC_GLOBAL, "#"); // NOI18N
143: public static final BaseImageTokenID GLOBAL_INCLUDE = new BaseImageTokenID(
144: "include", id++, TC_GLOBAL); // NOI18N
145:
146: // Targets and Dependencies
147: public static final BaseImageTokenID TARGET_COLON = new BaseImageTokenID(
148: "colon", id++, TC_TARGET, ":"); // NOI18N
149: public static final BaseImageTokenID TARGET_DOUBLE_COLON = new BaseImageTokenID(
150: "double-colon", id++, TC_TARGET, "::"); // NOI18N
151: public static final BaseImageTokenID TARGET_PERCENT = new BaseImageTokenID(
152: "percent", id++, TC_TARGET, "%"); // NOI18N
153:
154: public static final BaseImageTokenID TARGET_DEFAULT = new BaseImageTokenID(
155: ".DEFAULT", id++, TC_TARGET); // NOI18N
156: public static final BaseImageTokenID TARGET_DONE = new BaseImageTokenID(
157: ".DONE", id++, TC_TARGET); // NOI18N
158: public static final BaseImageTokenID TARGET_FAILED = new BaseImageTokenID(
159: ".FAILED", id++, TC_TARGET); // NOI18N
160: public static final BaseImageTokenID TARGET_GETPOSIX = new BaseImageTokenID(
161: ".GET_POSIX", id++, TC_TARGET); // NOI18N
162: public static final BaseImageTokenID TARGET_IGNORE = new BaseImageTokenID(
163: ".IGNORE", id++, TC_TARGET); // NOI18N
164: public static final BaseImageTokenID TARGET_INIT = new BaseImageTokenID(
165: ".INIT", id++, TC_TARGET); // NOI18N
166: public static final BaseImageTokenID TARGET_KEEPSTATE = new BaseImageTokenID(
167: ".KEEP_STATE", id++, TC_TARGET); // NOI18N
168: public static final BaseImageTokenID TARGET_KEEPSTATEFILE = new BaseImageTokenID(
169: ".KEEP_STATE_FILE", id++, TC_TARGET); // NOI18N
170: public static final BaseImageTokenID TARGET_MAKEVERSION = new BaseImageTokenID(
171: ".MAKE_VERSION", id++, TC_TARGET); // NOI18N
172: public static final BaseImageTokenID TARGET_NOPARALLEL = new BaseImageTokenID(
173: ".NO_PARALLEL", id++, TC_TARGET); // NOI18N
174: public static final BaseImageTokenID TARGET_PARALLEL = new BaseImageTokenID(
175: ".PARALLEL", id++, TC_TARGET); // NOI18N
176: public static final BaseImageTokenID TARGET_POSIX = new BaseImageTokenID(
177: ".POSIX", id++, TC_TARGET); // NOI18N
178: public static final BaseImageTokenID TARGET_PRECIOUS = new BaseImageTokenID(
179: ".PRECIOUS", id++, TC_TARGET); // NOI18N
180: public static final BaseImageTokenID TARGET_SCCSGET = new BaseImageTokenID(
181: ".SCCS_GET", id++, TC_TARGET); // NOI18N
182: public static final BaseImageTokenID TARGET_SCCSGETPOSIX = new BaseImageTokenID(
183: ".SCCS_GET_POSIX", id++, TC_TARGET); // NOI18N
184: public static final BaseImageTokenID TARGET_SILENT = new BaseImageTokenID(
185: ".SILENT", id++, TC_TARGET); // NOI18N
186: public static final BaseImageTokenID TARGET_SUFFIXES = new BaseImageTokenID(
187: ".SUFFIXES", id++, TC_TARGET); // NOI18N
188: public static final BaseImageTokenID TARGET_WAIT = new BaseImageTokenID(
189: ".WAIT", id++, TC_TARGET); // NOI18N
190:
191: // Errors
192: public static final BaseTokenID ERR_INCOMPLETE_MACRO_LITERAL = new BaseTokenID(
193: "incomplete-macro-literal", id++, TC_ERRORS); // NOI18N
194:
195: // Context instance declaration
196: public static final MakefileTokenContext context = new MakefileTokenContext();
197:
198: public static final TokenContextPath contextPath = context
199: .getContextPath();
200:
201: private MakefileTokenContext() {
202: super ("makefile-"); // NOI18N
203:
204: try {
205: addDeclaredTokenIDs();
206: } catch (Exception e) {
207: if (Boolean.getBoolean("netbeans.debug.exceptions")) { //NOI18N
208: e.printStackTrace();
209: }
210: }
211:
212: }
213:
214: }
|