📄 parsingmethod.java
字号:
public void forS()
{
logicExpressAnalyze();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
{
advance();
if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("++")||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("--"))
{
advance();
forA();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("="))
{
advance();
expressAnalyze();
forA();
}
else
{
errorMethod.error("for",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("for",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("sign",0,";",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
public void forA()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(")"))
{
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();
}
}
}
////////////////print sentence///////////////
public void printfAnalyze()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("printf"))
{
advance();
printfA();
if(!queueIsEmpty())
{
errorMethod.error("printf",2,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
}
public void printfA()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("("))
{
advance();
printfB();
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("sign",0,"(",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
public void printfB()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("\""))
{
advance();
printfC();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("\""))
{
advance();
///////////////////
// showQueue();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
{
advance();
printfD();
}
else
{
errorMethod.error("printf",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("sign",0,"'",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("printf",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
public void printfC()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("%"))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("d")
||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("f")
||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("c"))
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("d"))
{
pushIntoQueue("int");
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("c"))
{
pushIntoQueue("char");
}
else
{
pushIntoQueue("double");
}
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
{
advance();
printfC();
}
}
}
}
public void printfD()
{
if(symbolIsExisting(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
String s = getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]);
String t = new String();
if(!queueIsEmpty())
{
t = popOutQueue();
}
else
{
errorMethod.error("printf",2,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
if(t.equals("double"))
{
if(s.equals("double")||s.equals("float"))
{
}
else
{
errorMethod.error("printf",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
if(t.equals(s))
{
}
else
{
errorMethod.error("printf",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
{
advance();
printfD();
}
}
else
{
errorMethod.error("symbol",1,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
////////////scanf sentence//////////////////
public void scanfAnalyze()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("scanf"))
{
advance();
scanfA();
if(!queueIsEmpty())
{
errorMethod.error("scanf",2,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
}
public void scanfA()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("("))
{
advance();
scanfB();
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("sign",0,"(",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
public void scanfB()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("\""))
{
advance();
scanfC();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("\""))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
{
advance();
scanfD();
}
else
{
errorMethod.error("scanf",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("sign",0,"\"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("sign",0,"\"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
public void scanfC()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("%"))
{
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("d")
||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("f")
||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("c"))
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("d"))
{
pushIntoQueue("int");
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("f"))
{
pushIntoQueue("double");
}
else
{
pushIntoQueue("char");
}
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
{
advance();
scanfC();
}
}
}
else
{
errorMethod.error("scanf",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
public void scanfD()
{
String s = new String();
String t = new String();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("&"))
{
advance();
if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
if(symbolIsExisting(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
s=getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]);
t=popOutQueue();
if(t.equals("double"))
{
if(s.equals("double")||s.equals("float"))
{
}
else
{
errorMethod.error("scanf",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
if(t.equals(s))
{
}
else
{
errorMethod.error("scanf",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
advance();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
{
advance();
scanfD();
}
}
else
{
errorMethod.error("symbol",1,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("scanf",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
{
errorMethod.error("scanf",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
//////////////null sentence////////////
public void nullAnalyze()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
{
advance();
}
}
/////////single sentence///////////////
public void singleSentence()
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("if"))
{
ifAnalyze();
clearStack();
clearQueue();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("while"))
{
whileAnalyze();
clearStack();
clearQueue();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("for"))
{
forAnalyze();
clearStack();
clearQueue();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("printf"))
{
printfAnalyze();
clearStack();
clearQueue();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("scanf"))
{
scanfAnalyze();
clearStack();
clearQueue();
}
else
if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
evaluateAnalyze();
clearStack();
clearQueue();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
{
nullAnalyze();
clearStack();
clearQueue();
}
else
{
errorMethod.error("single",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
clearStack();
clearQueue();
}
}
/////////multi sentence////////////////
public void multiSentence()
{
boolean flag = true;
boolean error = false;
while(flag)
{
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("if"))
{
ifAnalyze();
clearStack();
clearQueue();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("while"))
{
whileAnalyze();
clearStack();
clearQueue();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("for"))
{
forAnalyze();
clearStack();
clearQueue();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("printf"))
{
printfAnalyze();
clearStack();
clearQueue();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("scanf"))
{
scanfAnalyze();
clearStack();
clearQueue();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("{"))
{
advance();
multiSentence();
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("}"))
{
advance();
clearStack();
clearQueue();
}
else
{
errorMethod.error("sign",0,"}",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
}
}
else
if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
{
evaluateAnalyze();
clearStack();
clearQueue();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
{
nullAnalyze();
clearStack();
clearQueue();
}
else
if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("}"))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -