left-recursion相关内容

ANTLR4 相互左递归

我刚刚在 ANTLR 4.2.2 中遇到了一个奇怪的问题: 考虑一个(简化的)java 语法.这不会编译: classOrInterfaceType: (classOrInterfaceType) '.'标识符|标识符; ANTLR 输出以下错误: error(119): Java.g4:::: 以下规则集相互左递归 [classOrInterfaceType] 是的,我也看到了左 ..
发布时间:2021-11-11 04:07:23 其他开发

相互左递归ANTLR 4

我很抱歉再问一个关于相互左递归的问题,我觉得我的情况对我来说是独一无二的,或者至少我无法弄清楚将它与其他人的语法联系起来.我对 comp sci 世界有点陌生(我是用 Java 自学的,这是我的目标语言,现在是 ANTLR4)所以如果可能的话,请用外行术语来描述事物,而不是 CS 主要术语. 我正在编写一个需要代数和符号导数的程序,当然这需要对事物进行解析,并对树进行操作,但我什至不会担心这 ..
发布时间:2021-11-11 04:07:14 Java开发

如何避免ANTLR 4中的相互左递归

我正在编写一个语法来处理标量和向量表达式.下面的语法被简化以显示我遇到的问题,其中标量表达式可以从向量中导出,向量可以从标量中导出.例如,向量可以是文字 [1, 2, 3] 或标量与向量的乘积 2 * [1, 2, 3](等价于到 [2, 4, 6]).标量可以是文字 2 或向量 [1, 2, 3][1] 的索引(等价于 2). grammar LeftRecursion;整数: [0-9]+; ..
发布时间:2021-11-11 04:03:08 其他开发

ANTLR4 相互左递归

我刚刚在 ANTLR 4.2.2 中遇到了一个奇怪的问题: 考虑一个(简化的)java 语法.这不会编译: classOrInterfaceType: (classOrInterfaceType) '.'标识符|标识符; ANTLR 输出以下错误: error(119): Java.g4:::: 以下规则集相互左递归 [classOrInterfaceType] 是的,我也看到了左 ..
发布时间:2021-11-11 03:49:51 其他开发

帮助对语法进行左分解以消除左递归

我有一个小的自定义脚本语言,我正在尝试更新它以允许布尔表达式,例如 a >2 和 a >2 和 (b 5).这是我在这里遇到问题的括号表达式. 这是一个(根据@Bart Kiers 的回答从原始帖子开始编辑)展示问题的完整语法.这是我实际语法的精简版,但问题也出现在这里. 语法测试;选项 {语言 = 'JavaScript';输出 = AST;}陈述: value_assignment_s ..
发布时间:2021-11-11 03:37:36 其他开发

DCG 和左递归

我正在尝试实现一个 dcg,它采用一组 {a,b,c,d}* 形式的字符串.我遇到的问题是,如果我有一个 s([a,c,b],[]),它返回true这是正确的答案但是当我有一个s([a,c,f],[])形式的查询时,它不返回一个答案并且它用完了本地堆栈. s -->[].s -->s,数量.数量 -->[一种].数量-->[乙].数量-->[C].数量-->[d]. 解决方案 使用 phra ..
发布时间:2021-06-22 18:59:42 其他开发

将上下文无关的语法转换为常规语法

E->EAE |(E)|-E |ID A->+ |-|* |/ 终端集为{id,-,+,*,/},起始符号为E. 我想将此语法转换为常规语法.我尝试取消该语法的左递归,然后得到: E->(E)X |-EX |idX A->+ |-|* |/ X->AEX |ε 是它还是我需要做的其他事情? 解决方案 您注定要失败,因为您的语言不是常规语言.没有正确 ..
发布时间:2021-04-24 19:38:02 其他开发

在上下文无关语法中删除左递归

试图找出在上下文无关的语法中删除左递归的方法。我已经习惯了某些形式,但这使我有些困惑。 S-> S {S} S | (A)| a A-> {S} A | epsilon 我还必须设计一个不错的解析器,我可以做到。但是,弄清楚这种左递归(尤其是在第一个递归上)让我感到困惑。 解决方案 尝试一下: S-> a [{S} S] | ([A])[{S} ..
发布时间:2020-10-08 23:29:30 其他开发

相互左递归ANTLR 4

很抱歉在相互左递归问题上再问一个问题,我觉得我的情况对我来说很独特,或者至少我想不出足以将其与其他所有人的语法联系起来的地方.我对comp sci世界有点陌生(我是用Java自学的,这是我的目标语言,现在是ANTLR4),因此,请尽可能以通俗的方式而不是CS的主要术语来描述事物. 我正在编写一个程序,该程序需要代数和符号导数,当然还要求对事物进行解析,并对树进行运算,但是我什至不必担心这一点 ..
发布时间:2020-09-03 00:25:42 Java开发

如何避免ANTLR 4中的相互左递归

我正在编写一种语法来处理标量和向量表达式.下面的语法经过简化以显示我所遇到的问题,其中标量表达式可以从矢量导出,而矢量可以从标量导出.例如,向量可以是文字[1, 2, 3]或标量与向量2 * [1, 2, 3]的乘积(等效于[2, 4, 6]).标量可以是文字2或向量[1, 2, 3][1]的索引(等效于2). grammar LeftRecursion; Integer : [0 ..
发布时间:2020-09-03 00:15:48 其他开发

ANTLR4相互左递归

我刚遇到ANTLR 4.2.2的一个奇怪问题: 考虑一个(简化的)Java语法.无法编译: classOrInterfaceType : (classOrInterfaceType) '.' Identifier | Identifier ; ANTLR输出以下错误: error(119): Java.g4::: The following s ..
发布时间:2020-09-02 23:27:14 其他开发

帮助左分解语法以消除左递归

我有一种小型的自定义脚本语言,我正在尝试对其进行更新,以允许使用布尔表达式,例如a > 2和a > 2 and (b 5).这是我在这里遇到麻烦的括号表达式. 这里是一个完整的语法(根据@Bart Kiers的回答根据原始帖子进行编辑)来显示问题.这是我实际语法的精简版,但是问题也在这里发生. grammar test; options { langu ..
发布时间:2020-09-02 22:41:20 其他开发

使用PyParsing解析函数调用

我正在尝试解析一种简单的语言.问题来自于解析函数调用.我试图告诉它,函数调用是一个表达式,后跟左括号,参数列表和右括号.我有这样的东西: expr = Forward() iden = Word(alphas+'_', alphanums+'_') integer = Word(nums) binop = operatorPrecedence(expr, ...) # irrevelant ..
发布时间:2020-06-29 20:56:25 Python

为什么LL语法不能是左递归的?

在 龙书 中,LL语法定义为如下: 当且仅当对于任何产生式A -> a|b,以下两个条件适用时,语法为LL. FIRST(a)和FIRST(b)是不相交的.这意味着它们不能同时导出EMPTY 如果b可以派生EMPTY,则a不能派生任何以FOLLOW(A)开头的字符串,即FIRST(a)和FOLLOW(A)必须不相交. 我知道LL语法不能递归,但是正式原因是什么?我猜左递归语 ..
发布时间:2020-06-29 20:56:14 其他开发