问题标签 [lemon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
597 浏览

parser-generator - 用一个小小的 Lemon 语法解决解析冲突

我正在尝试学习Lemon 解析器生成器的基础知识,但我很快就卡住了。

这是一个小语法:

它导致1个解析冲突:

然而,如果我将最后一条规则重写如下:

然后它不会引起冲突。但我认为这不是正确的方法。

如果有人能解释什么是正确的方法以及为什么,我将不胜感激。

0 投票
1 回答
161 浏览

c - Lemon 接受 lempar.c 并在文件末尾输出垃圾

我正在使用LEMON Parser Generator,由于某种原因,它在输出文件的末尾输出了一堆垃圾,而不是用%%生成的代码替换 lempar.c 中的 s。我直接从 sqlite 源复制了 lemon.c 和 lempar.c。这是我的语法文件:

这是它只是附加到lempar文件副本末尾的垃圾

0 投票
1 回答
427 浏览

parsing - Lemon Parser:这条规则不能减少

我正在尝试编写一个语法来解析模板语言,比如jinja2(或您选择的树枝),但我无法成功解析switch-case语句。

让我展示所需的语法:

这里 endcase 只是作为中断。

我的语法文件的工作部分:

这只是我语法的一部分,我已经为for, if, while, do,loop等工作过语法。

但我不知道:

  1. {% case expr %} statement_list(T)没有{% endcase %}
  2. {% default %} statement_list(T)

例如我尝试使用:

对于#1但没有运气,得到

这条规则不能减少。

#2 也一样

坦率地说,我理解问题的根源 - 缺少大小写/默认绑定,但实际上我不知道如何解决这个问题。

任何帮助将不胜感激!

0 投票
1 回答
351 浏览

c++ - Lua5.1柠檬语法如何使用?

我在这里找到了 Lemon 的 Lua 5.1 语法(页面末尾的清单 1):

我试图编译它,lemon -c lua51.y但有很多错误:

少了什么东西?

0 投票
1 回答
68 浏览

bison - 如何禁止令牌之间的空格?

在 bash 中,分配中不能有空格=

bashyylex()只是将整个事物x=10作为ASSIGNMENT_WORD令牌返回。然后进行处理。

http://git.savannah.gnu.org/cgit/bash.git/tree/parse.y#n723

但是它是否更好地处理解析器而不是词法分析器的分配(作为我看到的关于在解析器中处理它的分配的大多数示例)?

如何设计语法以禁用周围的空格=?谢谢。

0 投票
1 回答
271 浏览

parsing - 柠檬解析器 REPL

我正在尝试基于LanguageKit构建一个 Smalltalk REPL ,它使用柠檬语法。目前解析器只支持解析完整的类定义,不支持解析方法语法之外的语句。

例如,这被解析:

但是,如果我尝试仅解析语句,它将失败:

以下不接受多个语句(例如Transcript show: 'hello'. Transcript show: 'world'.):

这里是最小的语法:

完整的语法可以在这里找到:smalltalk.y。我一直在阅读其他语法并搜索stackoverflow,但没有看到例如这个语法的区别,也不明白为什么这不起作用。

0 投票
1 回答
86 浏览

xcode - 柠檬解析器作为 Xcode 构建规则

在集成为“使用脚本的 Yacc 源文件”的 Xcode 中使用柠檬解析器时,柠檬生成的警告不会显示在 Xcode 警告部分。

0 投票
2 回答
1239 浏览

r - 带有 grid_arrange_shared_legend 的列表中的多面板 ggplot

我试图通过允许用户选择要绘制的面板数量来使ggplot具有共享图例的多面板更加灵活。ShinyApp

目前,我的代码一次写出面板对象 1 。

我不完全理解为什么我找不到一种方法来告诉grid_arrange_shared_legend他们接受一个地块列表(列表对象),而不是一个接一个地写出来。它抛出这个错误:

UseMethod(“ggplot_build”)中的错误:没有适用于“ggplot_build”的方法应用于“NULL”类的对象

使用列表,列表中有多少个地块并不重要,我会根据列表的长度计算 ncol 或 nrow ......

0 投票
1 回答
170 浏览

parsing - 如何从柠檬中获取生成的 AST?

如何从柠檬中获取 AST(抽象语法树)的根节点?我尝试使用%extra_argument { Node *rootNode }和使用以下代码来返回根节点对象。

但是根节点主解析函数中的根节点保持为空。

这是主要的解析功能。

任何人都可以帮忙吗?提前致谢。

0 投票
1 回答
146 浏览

c++ - 如何修复柠檬中的“错误:调用'YYMINORTYPE'的隐式删除的默认构造函数”?

当我编译我的柠檬语法时。我收到以下错误。

任何人都可以帮忙吗?提前致谢。