/* * Token.java - Generic token * Copyright (C) 1998, 1999 Slava Pestov * * You may use and modify this package for any purpose. Redistribution is * permitted, in both source and binary form, provided that this notice * remains intact in all source distributions of this package. */ package processing.app.syntax; /** * A linked list of tokens. Each token has three fields - a token * identifier, which is a byte value that can be looked up in the * array returned by <code>SyntaxDocument.getColors()</code> * to get a color value, a length value which is the length of the * token in the text, and a pointer to the next token in the list. * * @author Slava Pestov * @version $Id$ */ public class Token { /** Normal text token id. This should be used to mark normal text. */ public static final byte NULL = 0; /** This can be used to mark a comment. */ public static final byte COMMENT1 = 1; /** This can be used to mark a comment. */ public static final byte COMMENT2 = 2; /** Strings in quotes */ public static final byte LITERAL1 = 3; /** Constants (QUARTER_PI, CORNERS, etc.) */ public static final byte LITERAL2 = 4; /** * Label token id. This can be used to mark labels * (eg, C mode uses this to mark ...: sequences) */ public static final byte LABEL = 5; /** Keywords (void, int, boolean, etc.) */ public static final byte KEYWORD1 = 6; /** Fields [variables within a class] */ public static final byte KEYWORD2 = 7; /** Loop/function-like blocks (for, while, etc.) */ public static final byte KEYWORD3 = 8; /** Processing variables (width, height, focused, etc.) */ public static final byte KEYWORD4 = 9; /** Datatypes (int, boolean, etc.) */ public static final byte KEYWORD5 = 10; /** Keywords which can be followed by parenthesis */ public static final byte KEYWORD6 = 11; /** Functions */ public static final byte FUNCTION1 = 12; /** Methods (functions inside a class) */ public static final byte FUNCTION2 = 13; /** Loop/function-like blocks (for, while, etc.) */ public static final byte FUNCTION3 = 14; /** Built-in Processing functions (setup, draw, mouseDragged). */ public static final byte FUNCTION4 = 15; /** * Operator token id. This can be used to mark an * operator. (eg, SQL mode marks +, -, etc with this * token type) */ public static final byte OPERATOR = 16; /** * Invalid token id. This can be used to mark invalid * or incomplete tokens, so the user can easily spot * syntax errors. */ public static final byte INVALID = 17; /** The total number of defined token ids. */ public static final byte ID_COUNT = INVALID + 1; /** * The first id that can be used for internal state * in a token marker. */ public static final byte INTERNAL_FIRST = 100; /** * The last id that can be used for internal state * in a token marker. */ public static final byte INTERNAL_LAST = 126; /** * The token type, that along with a length of 0 * marks the end of the token list. */ public static final byte END = 127; /** * The length of this token. */ public int length; /** * The id of this token. */ public byte id; /** * The next token in the linked list. */ public Token next; /** * Creates a new token. * @param length The length of the token * @param id The id of the token */ public Token(int length, byte id) { this.length = length; this.id = id; } /** * Returns a string representation of this token. */ public String toString() { return "[id=" + id + ",length=" + length + "]"; } }