## 测试 ##
配置json
```json
{
"production": [
{ "left": "START", "right": ["S"] },
{ "left": "S", "right": ["CLASS_S","S"] },
{ "left": "S", "right": ["FUNC_S","S"] },
{ "left": "S", "right": [] },
{ "left": "CLASS_S", "right": ["FIELD_TYPE","class","ID","{","CLASS_BODY","}"] },
{ "left": "FUNC_S", "right": ["function","TYPEDEF","ID","(","ARGS",")","{","BLOCK_STMT","}"] },
{ "left": "FIELD_TYPE", "right": [] },
{ "left": "FIELD_TYPE", "right": ["public"] },
{ "left": "FIELD_TYPE", "right": ["private"] },
{ "left": "FIELD_TYPE", "right": ["protected"] },
{ "left": "OPTIONAL_FIELD_TYPE", "right": [] },
{ "left": "OPTIONAL_FIELD_TYPE", "right": ["static"] },
{ "left": "OPTIONAL_FIELD_TYPE", "right": ["final"] },
{ "left": "TYPEDEF", "right": ["ID"] },
{ "left": "TYPEDEF", "right": ["CONST_TYPE"] },
{ "left": "CONST_TYPE", "right": ["void"] },
{ "left": "CONST_TYPE", "right": ["char"] },
{ "left": "CONST_TYPE", "right": ["bool"] },
{ "left": "CONST_TYPE", "right": ["short"] },
{ "left": "CONST_TYPE", "right": ["int"] },
{ "left": "CONST_TYPE", "right": ["long"] },
{ "left": "CONST_TYPE", "right": ["double"] },
{ "left": "CONST_TYPE", "right": ["float"] },
{ "left": "CONST_TYPE", "right": ["var"] },
{ "left": "DECLARE_INTER", "right": ["TYPEDEF","ID","DECLARE_INIT","DECLARE_VARS",";"] },
{ "left": "DECLARE_CLASS", "right": ["FIELD_TYPE","OPTIONAL_FIELD_TYPE","TYPEDEF","ID","DECLARE_INIT","DECLARE_VARS",";"] },
{ "left": "METHOD_CLASS", "right": ["FIELD_TYPE","OPTIONAL_FIELD_TYPE","TYPEDEF","ID","(","ARGS",")","{","BLOCK_STMT","}"] },
{ "left": "METHOD_CLASS", "right": ["FIELD_TYPE","OPTIONAL_FIELD_TYPE","TYPEDEF","main","(","ARGS",")","{","BLOCK_STMT","}"] },
{ "left": "DECLARE_INIT", "right": [] },
{ "left": "DECLARE_INIT", "right": ["=","EXPRESSION"] },
{ "left": "DECLARE_VARS", "right": [] },
{ "left": "DECLARE_VARS", "right": [",","ID","DECLARE_INIT","DECLARE_VARS"] },
{ "left": "ARGS", "right": [] },
{ "left": "ARGS", "right": ["TYPEDEF","ID","ARG"] },
{ "left": "ARG", "right": [] },
{ "left": "ARG", "right": [",","TYPEDEF","ID","ARG"] },
{ "left": "EXPRESSION", "right": ["VALUE"] },
{ "left": "EXPRESSION", "right": ["(","EXPRESSION",")"] },
{ "left": "EXPRESSION", "right": ["EXPRESSION","OPERATION","EXPRESSION"] },
{ "left": "VALUE", "right": ["CONSTANT"] },
{ "left": "VALUE", "right": ["ID","OPERATION_SPECIAL"] },
{ "left": "VALUE", "right": ["OPERATION_SPECIAL","ID"] },
{ "left": "OPERATION_SPECIAL", "right": [] },
{ "left": "OPERATION_SPECIAL", "right": ["OPERATION_SPECIAL_SELF"] },
{ "left": "OPERATION_SPECIAL_SELF", "right": ["++"] },
{ "left": "OPERATION_SPECIAL_SELF", "right": ["--"] },
{ "left": "OPERATION", "right": ["OPERATION_CAL"] },
{ "left": "OPERATION", "right": ["OPERATION_CMP"] },
{ "left": "OPERATION", "right": ["OPERATION_EQ"] },
{ "left": "OPERATION", "right": ["OPERATION_LOG"] },
{ "left": "OPERATION_CAL", "right": [","] },
{ "left": "OPERATION_CAL", "right": ["+"] },
{ "left": "OPERATION_CAL", "right": ["-"] },
{ "left": "OPERATION_CAL", "right": ["*"] },
{ "left": "OPERATION_CAL", "right": ["/"] },
{ "left": "OPERATION_CAL", "right": ["%"] },
{ "left": "OPERATION_CAL", "right": ["|"] },
{ "left": "OPERATION_CAL", "right": ["&"] },
{ "left": "OPERATION_CAL", "right": ["~"] },
{ "left": "OPERATION_CAL", "right": ["^"] },
{ "left": "OPERATION_EQ", "right": ["="] },
{ "left": "OPERATION_EQ", "right": ["+="] },
{ "left": "OPERATION_EQ", "right": ["-="] },
{ "left": "OPERATION_EQ", "right": ["*="] },
{ "left": "OPERATION_EQ", "right": ["/="] },
{ "left": "OPERATION_EQ", "right": ["%="] },
{ "left": "OPERATION_CMP", "right": ["<"] },
{ "left": "OPERATION_CMP", "right": [">"] },
{ "left": "OPERATION_CMP", "right": ["=="] },
{ "left": "OPERATION_CMP", "right": ["!="] },
{ "left": "OPERATION_CMP", "right": ["<="] },
{ "left": "OPERATION_CMP", "right": [">="] },
{ "left": "OPERATION_LOG", "right": ["!"] },
{ "left": "OPERATION_LOG", "right": ["&&"] },
{ "left": "OPERATION_LOG", "right": ["||"] },
{ "left": "IF_STMT", "right": ["if","(","EXPRESSION",")","{","BLOCK_STMT","}","ELSE_IF_STMT"] },
{ "left": "ELSE_IF_STMT", "right": [] },
{ "left": "ELSE_IF_STMT", "right": ["else","IF_STMT"] },
{ "left": "ELSE_IF_STMT", "right": ["else","{","BLOCK_STMT","}"] },
{ "left": "FOR_STMT", "right": ["for","(","FOR_EXPRESSION",";","EXPRESSION",";","EXPRESSION",")","{","BLOCK_STMT","}"] },
{ "left": "FOR_EXPRESSION", "right": ["EXPRESSION"] },
{ "left": "FOR_EXPRESSION", "right": ["TYPEDEF","ID","DECLARE_INIT","DECLARE_VARS"] },
{ "left": "WHILE_STMT", "right": ["while","(","EXPRESSION",")","{","BLOCK_STMT","}"] },
{ "left": "DO_WHILE_STMT", "right": ["do","{","BLOCK_STMT","}","while","(","EXPRESSION",")",";"] },
{ "left": "PRINT_STMT", "right": ["print","(","EXPRESSION",")",";"] },
{ "left": "RETURN_STMT", "right": ["return","EXPRESSION",";"] },
{ "left": "CLASS_BODY", "right": [] },
{ "left": "CLASS_BODY", "right": ["CLASS_BODY_TMP","CLASS_BODY"] },
{ "left": "CLASS_BODY_TMP", "right": ["DECLARE_CLASS"] },
{ "left": "CLASS_BODY_TMP", "right": ["METHOD_CLASS"] },
{ "left": "BLOCK_STMT", "right": [] },
{ "left": "BLOCK_STMT", "right": ["BLOCK_STMT_TMP","BLOCK_STMT"] },
{ "left": "BLOCK_STMT_TMP", "right": ["DECLARE_INTER"] },
{ "left": "BLOCK_STMT_TMP", "right": ["EXPRESSION",";"] },
{ "left": "BLOCK_STMT_TMP", "right": ["IF_STMT"] },
{ "left": "BLOCK_STMT_TMP", "right": ["FOR_STMT"] },
{ "left": "BLOCK_STMT_TMP", "right": ["WHILE_STMT"] },
{ "left": "BLOCK_STMT_TMP", "right": ["DO_WHILE_STMT"] },
{ "left": "BLOCK_STMT_TMP", "right": ["PRINT_STMT"] },
{ "left": "BLOCK_STMT_TMP", "right": ["RETURN_STMT"] }
]
}
```
测试代码文件
```javascript
//hhl.hl 测试 词法 语法分析
//hhl.hl 测试 词法 语法分析
/**
* 多行注释
*/
function void test(){
double ccc = 1.1;
double ccc2 = 1.1E+3.1;
var ccc3 = 1.1-3.8i;
var ccc4 = 1.1-3.8+4.5;
print(123);
++i;
print("我不管我最棒");
return "我可以的"+ ++a;
}
class HHLNB{
void main(){
// 注释
/*注释测试*/
int a,dd = 12;
int b = 14;
double c = a + b * 2.4 + 1.2 - 1.2E+12;
if(a<=b || b>c && a==c){
print("哈哈哈\n");
print('a');
print("");
}else{
print("哈哈哈");
}
for(int i=0;i<10;++i){
print(i);
}
print(c);
bool hahah = false;
}
}
// dsah错误测试(哈哈)
function void test(){
double ccc = 1.1;
double ccc2 = 1.1E+3.1;
var ccc3 = 1.1-3.8i;
var ccc4 = 1.1-3.8+4.5;
print(123);
++i;
print("我不管我最棒");
return "我可以的"+ ++a;
}
```
结果
```text
ActionGoto{id=0, op={CLASS_S=2, FIELD_TYPE=4, null=ProductionAtom{left='S', right=[]}, private=7, S=1, public=6, protected=8, function=5, FUNC_S=3, class=ProductionAtom{left='FIELD_TYPE', right=[]}}}
ActionGoto{id=1, op={null=ProductionAtom{left='START', right=[S]}}}
ActionGoto{id=2, op={CLASS_S=2, FIELD_TYPE=4, null=ProductionAtom{left='S', right=[]}, private=7, S=9, public=6, protected=8, function=5, FUNC_S=3, class=ProductionAtom{left='FIELD_TYPE', right=[]}}}
ActionGoto{id=3, op={CLASS_S=2, FIELD_TYPE=4, null=ProductionAtom{left='S', right=[]}, private=7, S=10, public=6, protected=8, function=5, FUNC_S=3, class=ProductionAtom{left='FIELD_TYPE', right=[]}}}
ActionGoto{id=4, op={class=11}}
ActionGoto{id=5, op={void=15, bool=17, double=21, var=23, CONST_TYPE=14, float=22, int=19, long=20, char=16, TYPEDEF=12, short=18, ID=13}}
ActionGoto{id=6, op={class=ProductionAtom{l
没有合适的资源?快使用搜索试试~ 我知道了~
编译器-词法分析、语法分析 、语义分析.zip
共43个文件
java:22个
png:8个
md:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 11 浏览量
2024-04-17
13:02:55
上传
评论
收藏 2.87MB ZIP 举报
温馨提示
编译器-词法分析、语法分析 、语义分析
资源推荐
资源详情
资源评论
收起资源包目录
编译器-词法分析、语法分析 、语义分析.zip (43个子文件)
lib
commons-io-2.8.0.jar 279KB
fastjson-1.2.75.jar 640KB
main.hl 1KB
src
META-INF
MANIFEST.MF 63B
com
lerogo
compiler
semantic
SyncTreeNodeKind.java 2KB
SymbolTable.java 3KB
Analyzer.java 22KB
CodeList.java 1KB
README.md 12KB
utils
file
FileReader.java 3KB
exception
semantic
ErrorType.java 746B
SemanticError.java 4KB
SemanticException.java 3KB
file
ReadFileException.java 425B
parser
GrammarException.java 1KB
ParserError.java 2KB
lexer
TokenException.java 1KB
parser
AnalysisList.java 3KB
config.json 6KB
SyncTable.java 17KB
Production.java 8KB
README.md 266KB
SyncTreeNode.java 2KB
lexer
Tokenizer.java 6KB
JudgeType.java 2KB
TokenType.java 307B
Lexer.java 1KB
Token.java 1KB
config.json 597B
README.md 6KB
Main.java 2KB
screenshot
3.png 333KB
1.png 183KB
6.png 28KB
5.png 314KB
4.png 291KB
8.png 23KB
7.png 75KB
2.png 24KB
compilar.jar 1013KB
test
main.hl 1KB
README.md 3KB
compiler.iml 1KB
共 43 条
- 1
资源评论
小码蚁.
- 粉丝: 2530
- 资源: 4146
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于C++的二叉树的创建与遍历(免费提供源码)
- AEB算法模型matlab版本
- Screenshot_2024-05-28-00-07-11-51_a935a6faaffa07c582f2c3acde62ae6b.jpg
- 1-230201111535.zip
- 《DAX 底层计算过程演示-ADDCOLUMNS + 复杂上下文环境》配套数据文件
- ruc-波兰表达式c语言递归demo笔记
- Java.md
- credit-visualstudio2022笔记
- SystemServer启动阶段思维示意图
- 168832737737857��Ϊ�˶�����-14.1.4.171-wearBeta-390-lspatched.apk
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功