gpt4 book ai didi

javascript - JISON 中的错误处理

转载 作者:行者123 更新时间:2023-12-02 16:46:52 25 4
gpt4 key购买 nike

我使用 JISON 生成了一个解析器:

%lex
%x TEXT
%%

("Project"|"project") {return 'PROJECTCOMMAND';}
"-au" {return 'ADDUSER';}
"-n" {this.begin('TEXT'); return 'NAMEOPTION';}
"-k" {return 'KEYOPTION';}
"-desc" {return 'DESCRIPTION';}
("--add"|"-a") {return 'ADDOPTION';}
<TEXT>[-a-zA-Z0-9@\.]+ {this.popState(); return 'TEXT';}
<INITIAL,TEXT>\s+ // Ignore white space...

/lex
%%
line :
PROJECTCOMMAND ADDUSER
{
//Project Command of add user
var res = new Object();
res.value = "addUser Project";
return res;
}
| PROJECTCOMMAND ADDOPTION
{
//Project Command with no arguments
var res = new Object();
res.value = "addProject";
return res;
}
| PROJECTCOMMAND ADDOPTION NAMEOPTION TEXT
{
//Project command with project name as argument
var res = new Object();
res.value = "addProject name";
res.name = $4;
return res;

}

如果我发出如下命令,上面的效果很好:

project -a  
project -au
project -a -n abc
...

但是如果我输入这样的命令,则会出现错误:

 project -a abcd    

它抛出一个错误。
同样的方式如果我发出命令

project -a -n  

错误:

 Expecting 'TEXT' got `1'  

解决这个问题的一种方法是编写所有可能的错误情况,但这永远不会结束,因为随着命令的增加,可能的错误情况也会增加,无论如何我可以告诉解析器如果它不满足上述任何命令,那么抛出一个常见错误?

提前致谢

最佳答案

我猜,projectPROJECTCOMMAND-aADDOPTIONabcd > 是NAMEOPTION,解析器是第四个 Node - TEXT。您可以选择一个、两个和四个 Node ,但不能选择三个 Node 。

关于javascript - JISON 中的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27056486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com