📄 parsingmethod.java
字号:
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("."))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("h")
||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("c"))
{
fileType=WordAnalyze.wordString[WordAnalyze.wordPointer];
storeIncludeFile(fileName,fileType);
advance();
}
else
{
errorMethod.error("file",3,fileName,WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("file",2,fileName,WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("file",2,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
//////define analyzing////////////
public void defineAnalyze()
{
while(judgeType(WordAnalyze.wordString[WordAnalyze.wordPointer])&&WordAnalyze.wordPointer<WordAnalyze.wordStringLength)
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("int")
||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("double")
||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("float"))
{
defineS();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("char"))
{
defineCharS();
}
clearStack();
}
}
public void defineCharS()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("char"))
{
symbolType = WordAnalyze.wordString[WordAnalyze.wordPointer];
pushIntoStack(WordAnalyze.wordString[WordAnalyze.wordPointer]);
advance();
defineCharA();
}
}
public void defineCharA()
{
if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
symbolName = WordAnalyze.wordString[WordAnalyze.wordPointer];
if(symbolIsExisting(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
errorMethod.error("symbol",2,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
else
{
storeSymbol(symbolName,symbolType);
}
}
advance();
defineCharB();
}
public void defineCharB()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("="))
{
advance();
defineCharC();
}
else
{
defineCharD();
}
}
public void defineCharC()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("'"))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].length()==1)
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("'"))
{
advance();
defineCharD();
}
else
{
errorMethod.error("sign",0,"'",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("define",2,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
if(symbolIsExisting(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
if(getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]).equals("char"))
{
advance();
defineCharD();
}
else
{
errorMethod.error("define",3,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("symbol",1,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("define",1,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
public void defineCharD()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
{
advance();
defineCharA();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
{
advance();
}
else
{
errorMethod.error("sign",0,";",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
public void defineS()
{
if(judgeType(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
pushIntoStack(WordAnalyze.wordString[WordAnalyze.wordPointer]);
symbolType = WordAnalyze.wordString[WordAnalyze.wordPointer];
advance();
defineA();
}
}
public void defineA()
{
if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
symbolName = WordAnalyze.wordString[WordAnalyze.wordPointer];
if(symbolIsExisting(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
errorMethod.error("symbol",2,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
else
{
storeSymbol(symbolName,symbolType);
}
advance();
defineB();
}
else
{
errorMethod.error("define",0,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
public void defineB()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("="))
{
advance();
defineC();
}
else
{
defineD();
}
}
public void defineC()
{
expressAnalyze();
defineD();
}
public void defineD()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
{
advance();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
{
advance();
defineA();
}
else
{
errorMethod.error("define",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
//////////evaluate express///////////////
public void evaluateAnalyze()
{
if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
if(!symbolIsExisting(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
errorMethod.error("symbol",1,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
else
{
pushIntoStack(getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]));
}
if(getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]).equals("int")
||getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]).equals("double")
||getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]).equals("float")
)
{
evaluateA();
}
else
if(getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]).equals("char"))
{
evaluateCharA();
}
}
}
public void evaluateCharA()
{
if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("="))
{
advance();
evaluateCharB();
}
else
{
errorMethod.error("evaluate",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
}
public void evaluateCharB()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("'"))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].length()==1)
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("'"))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
{
advance();
}
else
{
errorMethod.error("sign",0,";",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("sign",0,"'",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("evaluate",2,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
if(symbolIsExisting(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
if(getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]).equals(getTopStack()))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
{
advance();
}
else
{
errorMethod.error("sign",0,";",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
}
else
{
errorMethod.error("symbol",1,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("evaluate",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
public void evaluateA()
{
if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("="))
{
advance();
expressAnalyze();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
{
advance();
}
else
{
errorMethod.error("evaluate",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("++")||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("--"))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
{
advance();
}
else
{
errorMethod.error("evaluate",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("evaluate",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
}
///////////if sentence///////////////////
public void ifAnalyze()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("if"))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("("))
{
advance();
logicExpressAnalyze();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(")"))
{
advance();
ifS();
}
else
{
errorMethod.error("sign",0,")",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("sign",0,"(",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
}
public void ifS()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("{"))
{
advance();
multiSentence();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("}"))
{
advance();
ifA();
}
else
{
errorMethod.error("sign",0,"}",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
singleSentence();
ifA();
}
}
public void ifA()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("else"))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("{"))
{
advance();
multiSentence();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("}"))
{
advance();
}
else
{
errorMethod.error("sign",0,"}",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
singleSentence();
}
}
}
/////////while sentence//////////////
public void whileAnalyze()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("while"))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("("))
{
advance();
logicExpressAnalyze();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(")"))
{
advance();
whileS();
}
else
{
errorMethod.error("sign",0,")",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("sign",0,"(",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
}
public void whileS()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("{"))
{
advance();
multiSentence();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("}"))
{
advance();
}
else
{
errorMethod.error("sign",0,"}",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
singleSentence();
}
}
///////for sentence///////////////////
public void forAnalyze()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("for"))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("("))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
{
nullAnalyze();
forS();
}
else
if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
evaluateAnalyze();
forS();
}
else
{
errorMethod.error("for",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("sign",0,"(",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -