问题标签 [grammar]

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 投票
5 回答
5756 浏览

compiler-construction - Haskell - 如何最好地表示编程语言的语法?

我一直在研究 Haskell,我很想在其中编写一个编译器(作为学习练习),因为它的许多固有特性可以很容易地应用于编译器(尤其是递归下降编译器)。

我无法完全理解的是如何以 Haskell-ian 方式表示语言的语法。我的第一个想法是使用递归数据类型定义,但我看不出如何使用它们来匹配语言中的关键字(“if”)。

非常感谢您的想法和建议,

皮特

0 投票
2 回答
450 浏览

parsing - Mgrammar 语法和变量声明

我敢肯定,我会被告知以另一种方式进行,但出于特定原因,必须以这种方式进行。如果没有,我就不会被卡住:-P

我正在使用的脚本语言必须接受这样定义的变量:

这是一个要求。我之前写了一个小语法,让我这样定义它们

但要求发生了变化。我的语法之前的样子是这样的

sType 的值是 System.String、Int32 等,然后是变量名,然后是表达式。然后我将其投影到 DeclareVar 节点并为其提供所需的参数,在代码中我将其解析为 XML,然后让 MGrammar 解析 XML 并很好地遍历我的 AST。由于他们希望能够在不声明类型的情况下执行变量,所以我有点坚持现在要做什么,即如何将没有声明类型的变量存储到适当的类中。任何帮助将不胜感激,希望这一切都有意义。

0 投票
3 回答
6915 浏览

parsing - ANTLR 中的树解析器是什么,我是否被迫编写一个?

我正在为 ANTLR 中的一小部分 C 语言编写一个词法分析器/解析器,它将在 Java 环境中运行。我是语言语法领域的新手,在许多 ANTLR 教程中,他们创建了一个 AST - 抽象语法树,我是否被迫创建一个,为什么?

0 投票
2 回答
815 浏览

grammar - 在 EBNF 中定义语言

L给出由字符组成的语言的 EBNF 规范,使得该语言中的句子具有a以下形式bc

到目前为止我所拥有的:

如果这是正确的,我仍然不确定如何生成Q以及如何S反向表示。

0 投票
2 回答
181 浏览

xml - 这个 XML 最简单/最清晰的 XSD 是什么?

对于这种 XML,最简单/最清晰的 XSD 样式是什么?(来自这个答案

编辑我将我的示例 XSD 和说明移到了答案中。

0 投票
5 回答
4219 浏览

c++ - 是否有 C++ 的语法解析器(类似于 python 的 yapps)?

我正在编写一种非常接近伪代码的实验性语言,目的是为了好玩并了解更多关于 C++ 的知识。问题之一是我需要解析一些语法,而我寻找一个好的 C++ 语法解析器的搜索没有成功(我找不到任何东西)。我想要完成的是:

我希望解析器返回一个包含类似于以下内容的地图:

基于我给它的一套规则。

如果我找不到任何有用的东西,我最终将不得不自己动手,但我想尽可能地避免重新发明轮子。

那么,这里有没有人知道生成 C++ 代码的好/健全的语法解析器?如果能被广泛使用就更好了。

谢谢!

0 投票
6 回答
496 浏览

language-agnostic - String.Format 中的适当文章 (a/an)

我正在寻找一种文化敏感的方式来在使用适当的文章 (a/an) 时将名词正确插入句子中。它可以使用 String.Format,或者如果在其他地方存在适当的方法来执行此操作,则可能使用其他方法。

例如:

基本句子:“您正在查看一个/一个 {0}”

这应该格式化为:“你在看胡萝卜”或“你在看鸡蛋”。

我目前正在通过手动检查要插入的单词的第一个字符然后手动插入“a”或“an”来执行此操作。但我担心当应用程序本地化为其他语言时,这可能会限制我。

是否有解决此问题的最佳实践?

解决方案:问题似乎很复杂,以至于不存在以我最初所说的方式解决此问题的实用程序或框架。似乎最好的解决方案(在我的情况下)是将文章与名词一起存储在数据库中,以便翻译人员可以拥有他们需要的控制级别。感谢所有的建议!

0 投票
1 回答
3853 浏览

grammar - First & Follow Sets 检查简单语法

这是我在课堂测验中遇到的几个问题,只是想验证它们的正确性。语法:

1.) B 的跟随集包含 g 和 epsilon (T/F)?Ans: F. Follow 集合中没有 epsilon,对吗?(只有 $ aka 输入结束)

2.) 第一组 S 包含 d、f、g 和 epsilon (T/F)?Ans: T. 我说错了,因为我认为 First(S) = First(A),g 不是其中的一部分。谁是正确的?

0 投票
1 回答
435 浏览

antlr - ANTLR 相当于野牛 REJECT 动作?

我正在尝试解析一个Name=Value对列表,其中值可以包含除空格以外的任何内容(即值可以包含等号)。
该名称仅限于通常的标识符字符。

问题是,“价值”标记匹配一切。例如,对于输入:

解析器会将整个输入与“值”标记匹配(并抛出一个MismatchedTokenException)。

bison中,有可能将状态分配给标记(或者这只是用于非终结符?),以便它们只有在显式转换到该状态后才变得“有资格”进行匹配。

编辑考虑一下,这在野牛中也不起作用-令牌拆分已经发生(在flex中);但是,我认为有一种方法可以REJECT标记,迫使flex尝试次优匹配。

这是我的 ANTLR 语法。

0 投票
0 回答
102 浏览

grammar - MGrammar 和不止一种有效的解释

我认为我可能遇到的是悬空的 else 问题,但我不确定。我负责编写的语言需要支持多行 if 语句以及单行 ie

用我的语言对应

我还需要添加对 else-if 和 else's 的支持,两者都使用与上述相同的语法以及 begin's 和 end's。我花了一段时间试图让它工作并且我已经接近了,但是我现在使用的语法我得到了“这个输入有多个有效的解释......”错误。这是我正在使用的 MGrammar 代码:

这可能是第 10 个版本,因为我尝试了各种方法来使 if/else if/else 结构正常工作。

基本上,我的 Main 得到一个 StatementList,sIf 就是其中之一。sIf 尝试查找多行或单行 if 语句,后跟可选的 sElseIf(您不必有 else)。

我认为问题在于正则表达式编译器可能将 else if 视为 sElse 后跟 sIf 语句,而不是 sElseIf 语句。在预览模式下,它实际上完全按照我想要的方式绘制了树,所以如果有办法在我的 C# 应用程序中解析它时忽略此消息,那么我猜这也可以。