Parsing 如何修复JavaCC/jjTree错误';方法jjMoveNfa_0(int,int)的代码超过了65535字节的限制';
我正在使用JavaCC/jjTree解析器生成器()编写一个文件解析器 由于要解析的文件以非标准方式包含大量数据(意思是:没有CSV等),因此为解析器生成器定义语法会导致大量的令牌定义 在某些情况下,“TokenManager”自动生成的代码超过了“private int jjMoveNfa_0(int startState,int curPos)”方法中65.535字节的限制Parsing 如何修复JavaCC/jjTree错误';方法jjMoveNfa_0(int,int)的代码超过了65535字节的限制';,parsing,generator,javacc,Parsing,Generator,Javacc,我正在使用JavaCC/jjTree解析器生成器()编写一个文件解析器 由于要解析的文件以非标准方式包含大量数据(意思是:没有CSV等),因此为解析器生成器定义语法会导致大量的令牌定义 在某些情况下,“TokenManager”自动生成的代码超过了“private int jjMoveNfa_0(int startState,int curPos)”方法中65.535字节的限制 因此,我的问题是:如何传递一个参数(或通过任何其他方式说服JavaCC/jjTree代码生成器)来生成不突破限制的代码
因此,我的问题是:如何传递一个参数(或通过任何其他方式说服JavaCC/jjTree代码生成器)来生成不突破限制的代码?我面临同样的问题。原因是我的代币的定义。 我有以下许多定义:
< MY_TOKEN : "MY_TOKEN" | "TOKEN_VARIANT1" | "TOKEN_VARIANT2" | "TOKEN_VARIANT3" >
所以我只需要在解析器语句中使用
< MY_TOKEN >
解决方案:
将定义拆分为:
< MY_TOKEN : "MY_TOKEN">
| < TOKEN_VARIANT1 : "TOKEN_VARIANT1" >
| < TOKEN_VARIANT2 : "TOKEN_VARIANT2" >
| < TOKEN_VARIANT3 : "TOKEN_VARIANT3" >
|
|
|
将解析器定义更改为
< MY_TOKEN > | < TOKEN_VARIANT1 > | < TOKEN_VARIANT2 > | < TOKEN_VARIANT3>
我也面临同样的问题。原因是我的代币的定义。
我有以下许多定义:
< MY_TOKEN : "MY_TOKEN" | "TOKEN_VARIANT1" | "TOKEN_VARIANT2" | "TOKEN_VARIANT3" >
所以我只需要在解析器语句中使用
< MY_TOKEN >
解决方案:
将定义拆分为:
< MY_TOKEN : "MY_TOKEN">
| < TOKEN_VARIANT1 : "TOKEN_VARIANT1" >
| < TOKEN_VARIANT2 : "TOKEN_VARIANT2" >
| < TOKEN_VARIANT3 : "TOKEN_VARIANT3" >
|
|
|
将解析器定义更改为
< MY_TOKEN > | < TOKEN_VARIANT1 > | < TOKEN_VARIANT2 > | < TOKEN_VARIANT3>
嘿,你找到解决方案了吗?没有,不幸的是没有。至少不是我所希望的。我试图通过在语法中为结构而不是复杂的标记定义更多的方法来解决这个问题,以减少所需标记的数量。但在某一点上,人们又达到了极限。我认为JavaCC如何生成代码是一个固有的问题,其中每个令牌都有常量,每个令牌都有一个切换用例。所以在我看来,关键的问题是,一个人只能拥有最多数量的代币…我知道我面临着同样的问题。请发布,如果你找到了解决方案,我也会这样做。嘿,你找到解决方案了吗?不,不幸的是没有。至少不是我所希望的。我试图通过在语法中为结构而不是复杂的标记定义更多的方法来解决这个问题,以减少所需标记的数量。但在某一点上,人们又达到了极限。我认为JavaCC如何生成代码是一个固有的问题,其中每个令牌都有常量,每个令牌都有一个切换用例。所以在我看来,关键的问题是,一个人只能拥有最多数量的代币…我知道我面临着同样的问题,请张贴如果你找到任何解决方案,我也会这样做。