📄 cifaprocess.java
字号:
package cifa;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
import java.util.ArrayList;
public class CifaProcess {
final String[] keyWords = {
"CONST", "VAR", "procedure", "begin", "end", "if", "then", "call",
"while", "do", "write", "read"};
ArrayList SYM = new ArrayList();
ArrayList ID = new ArrayList();
ArrayList NUM = new ArrayList();
ArrayList errMessage = new ArrayList();
public CifaProcess() {
}
/*public static void main(String args[]) {
CifaProcess cifaTest = new CifaProcess();
cifaTest.getSYM("c:=b a");
}*/
public void getSYM(String inputString) {
char[] inputChar = null;
inputChar = inputString.toCharArray();
int i = 0;
while (i < inputChar.length) {
if (isAlpha(inputChar[i])) {
int j = i;
boolean maybeKey = true;
while (isNum(inputChar[j]) || isAlpha(inputChar[j])) {
if (isNum(inputChar[j])) {
maybeKey = false;
}
j++;
if (j >= inputChar.length) {
break;
}
}
if ( (j - i) >= 10) {
errMessage.add(
"Error:The length of identifier or keyword is too long at " +
inputString + " (" + i + ")");
i = inputChar.length - 1;
break;
}
String test = "";
boolean isKeyWord = false;
test = inputString.substring(i, j);
//System.out.println(test);
if (maybeKey == true) {
for (int k = 0; k < keyWords.length; k++) {
if (test.equals(keyWords[k])) {
isKeyWord = true;
SYM.add(test + "SYM");
//System.out.println(test + " is a KeyWord.");
}
}
}
if (isKeyWord == false) {
SYM.add("IDENT");
ID.add(test);
//System.out.println(test + " is an identifier.");
}
i = j;
//i++;
continue;
}
if (isNum(inputChar[i])) {
int j = i;
while (isNum(inputChar[j]) || isAlpha(inputChar[j])) {
j++;
if (j >= inputChar.length) {
break;
}
}
boolean isNumber = true;
for (int k = i; k < j; k++) {
if (isAlpha(inputChar[k])) {
isNumber = false;
}
}
if (isNumber == false) {
errMessage.add("Error:Unknown identifier at :" + inputString + " (" +
i + ")");
i = j;
//i++;
continue;
}
String test = inputString.substring(i, j);
SYM.add("NUMBER");
NUM.add(test);
//System.out.println(test);
//System.out.println(test + " is a number.");
i = j;
//i++;
continue;
}
if (inputChar[i] == '+' || inputChar[i] == '-' || inputChar[i] == '*' ||
inputChar[i] == '/' || inputChar[i] == ':' || inputChar[i] == '=' ||
inputChar[i] == '#' || inputChar[i] == '<' || inputChar[i] == '>' ||
inputChar[i] == ';' || inputChar[i] == ',' || inputChar[i] == '(' ||
inputChar[i] == ')' || inputChar[i] == '.') {
switch (inputChar[i]) {
case '+':
case '-':
case '*':
case '/':
case '=':
case '#':
case ';':
case ',':
case '(':
case ')':
case '.':
SYM.add("" + inputChar[i] + "SYM");
break;
case ':':
case '<':
case '>':
if (i == inputChar.length - 1) {
SYM.add("" + inputChar[i] + "SYM");
break;
}
else if (inputChar[i + 1] == '=') {
SYM.add("" + inputChar[i] + inputChar[i + 1] + "SYM");
i++;
break;
}
else {
SYM.add("" + inputChar[i] + "SYM");
break;
}
}
i++;
continue;
}
if (inputChar[i] == ' ' || inputChar[i] == 0x0D || inputChar[i] == 0x0A) {
i++;
continue;
}
errMessage.add("Unrecognized character at :" + inputString + " (" + i +
")");
i++;
}
/*for (int j = 0; j < SYM.size(); j++) {
System.out.println(SYM.get(j));
}
System.out.println();
for (int j = 0; j < ID.size(); j++) {
System.out.println(ID.get(j));
}
System.out.println();
for (int j = 0; j < NUM.size(); j++) {
System.out.println(NUM.get(j));
}
System.out.println();
for (int j = 0; j < errMessage.size(); j++) {
System.out.println(errMessage.get(j));
}*/
//return errMessage;
}
boolean isAlpha(char inputChar) {
if (inputChar <= 'z' && inputChar >= 'A') {
return true;
}
return false;
}
boolean isNum(char inputChar) {
if (inputChar <= '9' && inputChar >= '0') {
return true;
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -