📄 analysecases.java
字号:
package cmm.cmmcc;
import java.util.ArrayList;
public class AnalyseCases {
public ArrayList arrayToken = new ArrayList();
public ArrayList arrayType = new ArrayList();
public ArrayList errorType = new ArrayList();
public ArrayList endPlaceArray = new ArrayList();
public int endPlace;//每一个token结束的地方
public String token;//token的内容
public String identifier;//存放token内容的缓存
public int length = Lexer.getLength();//所有的输入的长度
/// <summary>
/// 判断不用向后读取的符号
/// </summary>
/// <param name="startPlace"></param>
/// <param name="curch"></param>
/// <param name="content"></param>
public void isSingleSymbol(int startPlace, char curch)
{
Token tk = null;
switch (curch)
{
case '*':
case '(':
case ')':
this.endPlace = startPlace;
arrayToken.add(curch);
arrayType.add("算数运算符");
errorType.add("correct");
endPlaceArray.add(endPlace);
break;
case '>':
this.endPlace = startPlace;
arrayToken.add(curch);
arrayType.add("关系运算符");
errorType.add("correct");
endPlaceArray.add(endPlace);
break;
case '{':
case '}':
this.endPlace = startPlace;
arrayToken.add(curch);
arrayType.add("语句符号");
errorType.add("correct");
endPlaceArray.add(endPlace);
break;
case ';':
this.endPlace = startPlace;
arrayToken.add(curch);
arrayType.add("分隔符");
errorType.add("correct");
endPlaceArray.add(endPlace);
break;
case ']':
this.endPlace = startPlace;
arrayToken.add(curch);
arrayType.add("error");
errorType.add("非法数组");
endPlaceArray.add(endPlace);
break;
}
}
/// <summary>
/// 判断需要向后读取一位以上的符号
/// </summary>
/// <param name="startPlace"></param>
/// <param name="curch"></param>
/// <param name="content"></param>
public void IsDoubleSymbol(int startPlace, char curch, String content)
{
switch (curch)
{
case '/':
if (startPlace + 1 < content.length())
{
token = "/";
//if (content[startPlace + 1] == '*')
if (content.charAt(startPlace + 1)=='*')
{
token = "/*";
if ((startPlace + 2) < content.length())
{
for (int i = (startPlace + 2); i < content.length(); i++)
{
token = token + content.charAt(i);
if (content.charAt(i) == '*' && i < content.length() && content.charAt(i+1) == '/')
{
token = token + content.charAt(i+1);
arrayToken.add(token);
arrayType.add("注释符号");
errorType.add("correct");
endPlace = i + 1;
endPlaceArray.add(endPlace);
break;
}
else if (i == (content.length() - 1))
{
arrayToken.add(token);
arrayType.add("注释符号");
errorType.add("correct");
endPlace = i;
endPlaceArray.add(endPlace);
}
}
}
else
{
arrayToken.add("/*");
arrayType.add("注释符号");
errorType.add("correct");
endPlace = startPlace + 1;
endPlaceArray.add(endPlace);
}
}
else
{
arrayToken.add(curch);
arrayType.add("算术运算符");
errorType.add("correct");
endPlace = startPlace;
endPlaceArray.add(endPlace);
}
}
else
{
arrayToken.add(curch);
arrayType.add("算数运算符");
errorType.add("correct");
endPlace = startPlace;
endPlaceArray.add(endPlace);
}
break;
case '=':
case '<':
if (startPlace + 1 < content.length())
{
//if (content[startPlace + 1] == '=')
if (content.charAt(startPlace + 1) == '=')
{
arrayToken.add("==");
arrayType.add("关系运算符");
errorType.add("correct");
endPlace = startPlace + 1;
endPlaceArray.add(endPlace);
}
//else if (content[startPlace + 1] == '>')
else if (content.charAt(startPlace + 1) == '>')
{
arrayToken.add("<>");
arrayType.add("关系运算符");
errorType.add("correct");
endPlace = startPlace + 1;
endPlaceArray.add(endPlace);
}
else
{
arrayToken.add(curch);
arrayType.add("关系运算符");
errorType.add("correct");
endPlace = startPlace;
endPlaceArray.add(endPlace);
}
}
else
{
arrayToken.add(curch);
arrayType.add("关系运算符");
errorType.add("correct");
endPlace = startPlace;
endPlaceArray.add(endPlace);
}
break;
case '[':
if (startPlace + 1 < content.length())
{
token = "[";
for (int i = (startPlace + 1); i < content.length(); i++)
{
//token = token + content[i];
token = token + content.charAt(i);
if (content.charAt(i) == ']')
{
if (content.charAt(i-1) == '[' && content.charAt(i) == ']')
{
arrayToken.add(token);
arrayType.add("数组");
errorType.add("correct");
endPlace = startPlace + 1;
endPlaceArray.add(endPlace);
i++;
break;
}
else
{
int j = 1;
//while (char.isDigit(token[j]))
while (java.lang.Character.isDigit(token.charAt(j)))
{
j++;
}
if (j == token.length() - 1)
{
arrayToken.add(token);
arrayType.add("数组");
errorType.add("correct");
endPlace = i;
endPlaceArray.add(endPlace);
i++;
break;
}
else
{
arrayToken.add(token);
arrayType.add("error");
errorType.add("非法数组");
endPlace = i;
endPlaceArray.add(endPlace);
i++;
break;
}
}
}
else if (content.charAt(i) != ']' && (content.charAt(i) == ' ' || content.charAt(i) == '+' || content.charAt(i) == '-' ||
content.charAt(i) == '*' || content.charAt(i) == '/' || content.charAt(i) == '(' || content.charAt(i) == ')' ||
content.charAt(i) == '{' || content.charAt(i) == '}' || content.charAt(i) == ';' || content.charAt(i) == '<' ||
content.charAt(i) == '>' || content.charAt(i) == '=' || content.charAt(i) == '\n'))
{
arrayToken.add(token);
arrayType.add("error");
errorType.add("非法数组");
endPlace = i;
endPlaceArray.add(endPlace);
i++;
break;
}
else if (content.charAt(i) != '0' && content.charAt(i) != '1' && content.charAt(i) != '2' && content.charAt(i) != '3' &&
content.charAt(i) != '4' && content.charAt(i) != '5' && content.charAt(i) != '6' && content.charAt(i) != '7' &&
content.charAt(i) != '8' && content.charAt(i) != '9')
{
for (int j = i + 1; j < content.length(); j++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -