问题标签 [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 投票
8 回答
11043 浏览

ruby - 学习树梢

我正在尝试自学 Ruby 的 Treetop 语法生成器。我发现,对于那里的“最佳”文档而言,不仅文档非常稀少,而且它似乎不像我希望的那样直观地工作。

在高层次上,我真的很喜欢比现场文档或视频更好的教程,如果有的话。

在较低级别上,这是我根本无法使用的语法:

当我加载它并在一个非常简单的测试对象中运行一些断言时,我发现:

工作正常,而

引发错误:NoMethodError: private method `eval' called for #

如果我在描述中反转整数和浮点数,整数和浮点数都会给我这个错误。我认为这可能与有限的前瞻性有关,但我在任何文档中都找不到任何信息,甚至无法涵盖在“或”上下文中进行评估的想法

更多信息可能会有所帮助。这是这两个 parse() 块的 pp 信息。

浮子:

Integer... 请注意,它似乎已被定义为遵循整数规则,但未捕获 eval() 方法:

更新:

我遇到了我的特殊问题,但我不知道为什么:

这对存在的文档没有意义,但只是删除额外的括号使匹配包括 Integer1 类以及 Integer0。Integer1 显然是持有 eval() 方法的类。我不知道为什么会这样。

我仍在寻找有关树梢的更多信息。

0 投票
3 回答
4475 浏览

html - 基于白名单为 (X)HTML 编写 XSS 过滤器

我需要在 C++ 中为CppCMS实现一个简单高效的 XSS 过滤器。我不能使用现有的用 PHP 编写的高质量过滤器,因为它是使用 C++ 的高性能框架。

基本思想是提供一个过滤器,该过滤器具有 HTML 标签的 while 列表和这些标签的选项白名单。例如。典型的 HTML 输入可以由 <b>, <i>, 标记和<a>带有 . 的标记组成href。但简单的实现还不够好,因为即使是允许的简单链接也可能包含 XSS:

那里还有很多其他的例子。所以我也想为像 href/src 这样的标签创建一个前缀白名单——所以我总是需要检查它是否以(https?|ftp)://

问题:

  • 这些假设是否足以满足大多数目的?这意味着如果我不提供style标签选项并使用前缀白名单检查 src/href 是否可以解决 XSS 问题?是否存在无法通过这种方式解决的问题?
  • 为了编写简单的解析器来清除所有不正确的禁止标记,如 HTML/XHTML 的形式语法是否有很好的参考?<script>
0 投票
3 回答
2023 浏览

parsing - 具体和抽象语法树的标准格式

我有一个爱好项目的想法,该项目执行一些代码分析和操作。该项目将需要给定源文件的具体和抽象语法树。此外,两棵树之间的双向引用会很有帮助。我想避免转录语法来构建我自己的词法分析器和解析器的工作。

是否有描述具体或抽象语法树的标准格式?是否有任何广泛使用的工具链支持输出到这些格式?

我没有考虑特定的目标编程语言。任何流行的原型都可以,但我更喜欢我熟悉的原型:Python、C#、Javascript 或 C/C++。

我希望能够通过工具或库运行源文件并取回两棵树。在理想情况下,在代码上运行该工具是可行的,因为它正在由用户编辑并且可以容忍错误。同样,我只是想开发一个原型,所以这些要求非常宽松。

谢谢!

0 投票
3 回答
944 浏览

grammar - BNF 语法匹配

我的老师给了我两个 bnf 语法:

和四个与之匹配的字符串:

  • dffd
  • dddefddfe
  • 德夫
  • 专用的

我想出了其中两个,但其他两个让我难过。我不希望任何人告诉我答案,但如果有人能给我一些关于我哪里出错的提示,我将不胜感激。

0 投票
9 回答
8740 浏览

compiler-construction - 如何从形式语法生成句子?

从语法生成句子的常用方法是什么?

我想要一种与解析器相反的算法。也就是说,给定一个正式的上下文无关语法(比如 LL),我想生成一个符合该语法的任意句子。我在这里使用句子来表示任何有效的文本主体,因此它实际上可以是一个完整的程序(即使它没有任何意义——只要它在语法上是正确的)。

示例语法:

示例生成程序

0 投票
2 回答
2722 浏览

parsing - 算术表达式的语法

我被分配了一项为算术表达式创建解析器的任务(带有括号和一元运算符)。所以我只想知道这个语法是否正确,它是否是 LL(1) 形式并且在为此构建解析表时遇到了真正的问题


优先级(从高到低)

二元运算符的结合性


0 投票
1 回答
4459 浏览

parsing - 算术表达式的 First & Follow 集

我想知道我为这个语法制作的 FIRST 和 FOLLOW 集是否正确


0 投票
2 回答
155 浏览

java - 适合JavaME的语法编译器推荐?

我想解析一些数据,我有一个 BNF 语法来解析它。谁能推荐任何能够生成可在移动设备上使用的代码的语法编译器?

由于这是针对 JavaME 的,因此生成的代码必须是:

  • 希望很小
  • 对外来 Java 库的低依赖
  • 不依赖于任何运行时 jar 文件。
0 投票
3 回答
12041 浏览

ruby - 红宝石语法

我正在寻找 BNF 形式的 Ruby 语法。有正式版吗?

0 投票
2 回答
340 浏览

java - ANTLR 可以生成最终的解析器类吗?

我正在使用 ANTLR 3.1 和 ANTLRWorks 在 Java 中生成解析器类。如果我用 Java final 关键字标记生成的类,解析器的性能会更好。问题是:每次从 ANTLR 语法重新生成代码后,我都会手动添加此关键字。无论如何,在语法中,告诉 ANTLR 将 final 关键字添加到生成的解析器类定义中吗?