package tirateima.gui.highlighting.pascal; import java.util.HashMap; import java.util.Map; /** * Modela um token da linguagem Pascal. * * @author Luciano Santos */ public class Token { private static Map<String, String> keywords; private static Map<String, String> types; private static final String palavras[] = { "and", "array", "begin", "case", "const", "div", "do", "downto", "else", "end", "file", "for", "function", "goto", "if", "in", "label", "mod", "nil", "not", "of", "packed", "procedure", "program", "record", "repeat", "set", "then", "to", "type", "until", "var", "while", "with"}; private static final String tipos[] = { "integer", "shortint", "longint", "byte", "word", "real", "single", "double", "extended", "comp", "char", "string", "boolean"}; static { keywords = new HashMap<String, String>(); types = new HashMap<String, String>(); for (int i = 0; i < palavras.length; i++) { keywords.put(palavras[i], palavras[i]); } for (int i = 0; i < tipos.length; i++) { types.put(tipos[i], tipos[i]); } } /* Constantes de identificaĆ§Ć£o dos tokens */ public static final int WHITESPACE = 0; public static final int BEGINCOMMENT_CH = 1; public static final int ENDCOMMENT_CH = 2; public static final int BEGINCOMMENT_PAR = 3; public static final int ENDCOMMENT_PAR = 4; public static final int OTHER = 5; public static final int EOLINE = 6; public static final int PONT = 7; public static final int IDENTIFIER = 8; public static final int STRING = 11; public static final int BAD_STRING = 12; public static final int NUM = 12; public static final int EOB = 13; public static final int AND = 14; public static final int ARRAY = 15; public static final int BEGIN = 16; public static final int CASE = 17; public static final int CONST = 18; public static final int DIV = 19; public static final int DO = 20; public static final int DOWNTO = 21; public static final int ELSE = 22; public static final int END = 23; public static final int FILE = 24; public static final int FOR = 25; public static final int FUNCTION = 26; public static final int GOTO = 27; public static final int IF = 28; public static final int IN = 29; public static final int LABEL = 30; public static final int MOD = 31; public static final int NIL = 32; public static final int NOT = 33; public static final int OF = 34; public static final int PACKED = 35; public static final int PROCEDURE = 36; public static final int PROGRAM = 37; public static final int RECORD = 38; public static final int REPEAT = 39; public static final int SET = 40; public static final int THEN = 41; public static final int TO = 42; public static final int TYPE = 43; public static final int UNTIL = 44; public static final int VAR = 45; public static final int WHILE = 46; public static final int WITH = 47; public static final int INTEGER = 48; public static final int SHORTINT = 49; public static final int LONGINT = 50; public static final int BYTE = 51; public static final int WORD = 52; public static final int REAL = 53; public static final int SINGLE = 54; public static final int DOUBLE = 55; public static final int EXTENDED = 56; public static final int COMP = 57; public static final int CHAR = 58; public static final int STRING_TP = 59; public static final int BOOLEAN = 60; private int id_token; private String valor_token; public Token(){ this.id_token = 0; this.valor_token = ""; } public Token(int id_token, String valor_token){ this.id_token = id_token; this.valor_token = valor_token; } public int getId(){ return id_token; } public String getValor(){ return valor_token; } public void setId(int id){ this.id_token = id; } public void setValor(String valor){ this.valor_token = valor; } public void appendToValor(char a) { valor_token += a; } public void appendToValor(String s) { valor_token += s; } public boolean ehPalavraChave() { return ((id_token >= AND) && (id_token <= WITH)); } public boolean ehTipo(){ return ((id_token >= INTEGER) && (id_token <= BOOLEAN)); } public static boolean ehPalavraChave(String id) { return keywords.containsKey(id.toLowerCase()); } public static boolean ehTipo(String id) { return types.containsKey(id.toLowerCase()); } }