📄 token.java
字号:
/* * @(#)Token.java 2.1 2003/10/07 * * Copyright (C) 1999, 2003 D.A. Watt and D.F. Brown * Dept. of Computing Science, University of Glasgow, Glasgow G12 8QQ Scotland * and School of Computer and Math Sciences, The Robert Gordon University, * St. Andrew Street, Aberdeen AB25 1HG, Scotland. * All rights reserved. * * This software is provided free for educational use only. It may * not be used for commercial purposes without the prior written permission * of the authors. */package Triangle.SyntacticAnalyzer;final class Token extends Object { protected int kind; protected String spelling; protected SourcePosition position; public Token(int kind, String spelling, SourcePosition position) { if (kind == Token.IDENTIFIER) { int currentKind = firstReservedWord; boolean searching = true; while (searching) { int comparison = tokenTable[currentKind].compareTo(spelling); if (comparison == 0) { this.kind = currentKind; searching = false; } else if (comparison > 0 || currentKind == lastReservedWord) { this.kind = Token.IDENTIFIER; searching = false; } else { currentKind ++; } } } else this.kind = kind; this.spelling = spelling; this.position = position; } public static String spell (int kind) { return tokenTable[kind]; } public String toString() { return "Kind=" + kind + ", spelling=" + spelling + ", position=" + position; } // Token classes... public static final int // literals, identifiers, operators... INTLITERAL = 0, CHARLITERAL = 1, IDENTIFIER = 2, OPERATOR = 3, // reserved words - must be in alphabetical order... ARRAY = 4, BEGIN = 5, CONST = 6, DO = 7, ELSE = 8, END = 9, FUNC = 10, IF = 11, IN = 12, LET = 13, OF = 14, PROC = 15, RECORD = 16, THEN = 17, TYPE = 18, VAR = 19, WHILE = 20, // punctuation... DOT = 21, COLON = 22, SEMICOLON = 23, COMMA = 24, BECOMES = 25, IS = 26, // brackets... LPAREN = 27, RPAREN = 28, LBRACKET = 29, RBRACKET = 30, LCURLY = 31, RCURLY = 32, // special tokens... EOT = 33, ERROR = 34; private static String[] tokenTable = new String[] { "<int>", "<char>", "<identifier>", "<operator>", "array", "begin", "const", "do", "else", "end", "func", "if", "in", "let", "of", "proc", "record", "then", "type", "var", "while", ".", ":", ";", ",", ":=", "~", "(", ")", "[", "]", "{", "}", "", "<error>" }; private final static int firstReservedWord = Token.ARRAY, lastReservedWord = Token.WHILE;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -