📄 introduce.txt
字号:
介绍文挡
类作用及组织形式:
本编译器有7个类组成:
CompileFrame:主类,实现编译器界面,获取编译区内代码,为词法分
析,语法分析提供信息基础。
WordAnalyze: 词法分析类,将由CompileFrame获得的字符流转化为字
符串,为语法分析提供信息基础。
ParsingMethod: 语法分析类,对WordAnalyze提供的字符串进行语法分
析,填写符号表,出现错误时转向错误处理程序,可
以识别标识符,数字(只限于整型数),变量定义,
分析赋值语句,if语句,while语句,for语句,空语
句,复合语句,是编译器的核心部分。
ErrorMethode: 错误处理类,嵌入ParsingMethod类中,当出现错误时
在错误区提示错误原因。
MiddleCode:中间代码生成类,解析经过语法,语义分析过的程序,利用
四元式生成中间代码,为代码优化及目标代码的生成
做准备。
SymbolTable: 符号表类,可以存储变量类型和名称。
HelpFrame: 帮助文档,包括软件使用方法。
IntroduceFrame: 介绍文档,包括软件内部文件组织形式,各文件功能
,编译器词法,文法分析过程。
MiddleCodeFrame:显示中间代码。
类内部重要函数:
CompileFrame:public void actionPerformed(ActionEvent e)
触发事件函数。
WordAnalyze:public void deleteUselessChar()
删除无用字符(空格,换行,回车)。
public boolean judgeStopSign()
判断划分字符串字符。
public void identifyWord()
识别字符。
public void showWordArray()/////////选择使用
显示识别出的字符串。
public void wordAnalyzeMethod()
供主类调用函数。
ParsingMethod:public void storeSymbol(String name,String type)
将识别的标示符存入符号表。
public boolean judgeType(String s)
判断是否为数据类型保留字(int,double,float,char)。
public boolean judgeNum(String s)
识别数字。
public boolean judgeOperator(String s)
识别算术操作符。
public boolean judgeLogicOperator(String s)
识别逻辑操作符。
public boolean judgeSymbol(String s)
识别标示符。
public void advance()
读取下一字符串。
public void mainProgram()
对函数语法分析。
public void defineAnalyze()
定义部分语法分析。
内含:public void defineAnalyze()
public void defineS()
public void defineA()
public void defineB()
public void defineC()
public void defineD()
public void evaluateAnalyze()
赋值语句语法分析。
内含:public void evaluateAnalyze()
public void evaluateA()
public void ifAnalyze()
if语句语法分析。
内含:public void ifAnalyze()
public void ifS()
public void ifA()
public void whileAnalyze()
while语句语法分析。
内含:public void whileAnalyze()
public void whileS()
public void forAnalyze()
for语句语法分析。
内含:public void forAnalyze()
public void forS()
public void forA()
public void nullAnalyze()
空语句语法分析。
内含:public void nullAnalyze()
public void singleSentence()
单句分析。
内含:public void singleSentence()
public void multiSentence()
复合语句分析。
内含:public void multiSentence()
public void expressAnalyze()
表达式分析。
内含:public void expressAnalyze()
public void expressA()
public void expressB()
public void logicExpressAnalyze()
逻辑表达式分析。
内含:public void logicExpressAnalyze()
public void logicExpressA()
public void logicExpressB()
public void logicExpressC()
public boolean symbolIsExisting(String s)
判断标示符是否存在。
public void getOverError()
跳过错误代码。
public void success()
显示编译成功信息。
public void showSymbolTable()////////选择使用
显示符号表内容。
public void programAnalyze()
集成各语法分析函数及其他作用函数,分析程序代码。
public void parsingAnalyzeMethod()
语法分析部分,供主函数调用。
ErrorMethod:public void error(String s,int i,String t)
接受错误信息,提示错误。
SymbolTable:public void setSymbolName(String s)
存入标示符名字。
public void setSymbolType(String s)
存入标示符类型。
public String getSymbolName()
获取标示符名字。
public String getSymbolType()
获取标示符类型。
HelpFrame:由help文件夹的help.txt中读取help文档。
IntroduceFrame:由help文件夹的introduce.txt中读取introduce文档。
词法:
数字:(只限正整数)
num->l|dA
A->lA|l
d->1|2|3|4|5|6|7|8|9
l->1|2|3|4|5|6|7|8|9|0
标示符:(以字母开头,只能包含字母,数字,'_'字符)
symbol->(a..z|A..Z)A
A->lA|l
l->a..z|A..Z|0..9|'_'
算术操作符:
operator->+|-|*|/|%
逻辑操作符:
logicoperator->==|>=|<=|==|>|<
语法:
算术表达式:
express->(express)|(num|symbol)A
A->B|null
B->operator express
逻辑表达式:
logicexpress->A B
B->&&logicexpress|||logicexpress|null
A->C|!C
C->D E
D->(express)|num|symbol
E->logicoperator D|null
赋值语句:
evaluatesentence->symbolA
A->=B
B->express
if语句:
ifsentence->"if" A
A->(B;
B->logicexpress C
C->")" D
D->singlesentence|"{" E
E->multisentence "}"
for语句:
forsentence->"for" A
A->"(" B
B->";" E|evaluatesentence D
D->";" E
E->logicexpress "F"
F->";" G
G->evaluatesentence H
H->")" I
I->singlesentence |"{" E
E->multisentence "}"
while语句:
whilesentence->"while" A
A->"(" B
B->logicexpress C
C->")" D
D->singlesentence|"{" E
E->multisentence "}"
空语句:
nullsentence->";"
单句:
singlesentence->evaluatesentence A|ifsentence A
|forsentence A|whilesentence A
|nullsentence A
A->";"
复合语句:
multisentence->singlesentence multisentence|null
编译器不足:
改进方向:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -