我的输入文本可能有这样一个简单的语句:
aircraft在我的语言中,我称它为一个名称,它表示一组具有各种属性的实例。在本例中,它生成了所有飞机实例的instance_set。
我可以将括号中的过滤器应用于任何instance_set:
aircraft(Altitude < ceiling)它产生了另一个,可能是降低的instance_set。由于它是一个实例集,所以我可以再次过滤它:
aircraft(Altitude < ceiling)(Speed > min_speed)我愚蠢地认为我可以在语法上做这样的事情:
instance_set = expr
expr = source / instance_set
source = name filter?它正确地分析了我的前两种情况,但对最后一种情况却产生了窒息:
aircraft(Altitude < ceiling)(Speed > min_speed)据报道,该错误发生在第二次打开paren之前。
为什么Arpeggio看不到只有一个过滤的instance_set,它本身就是一个过滤的实例集?
我谦卑地将我的上诉提交给分析神灵并等待洞察.
发布于 2020-11-02 04:53:12
您的前两种情况都与source匹配。一旦source被匹配,它就匹配;这就是PEG契约。因此,解析器不会探索替代方法。
但假设是真的。那又有什么用呢?规则说,如果一个expr不是source,那么它就是一个instance_set。但是instance_set只是一个expr。换句话说,expr要么是source,要么是expr。很明显,另一种选择对我们没有任何帮助。
我很确定Arpeggio有重复,这就是你真正想要的:
source = name filter*https://stackoverflow.com/questions/64639294
复制相似问题