问题标签 [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.
ruby - 学习树梢
我正在尝试自学 Ruby 的 Treetop 语法生成器。我发现,对于那里的“最佳”文档而言,不仅文档非常稀少,而且它似乎不像我希望的那样直观地工作。
在高层次上,我真的很喜欢比现场文档或视频更好的教程,如果有的话。
在较低级别上,这是我根本无法使用的语法:
当我加载它并在一个非常简单的测试对象中运行一些断言时,我发现:
工作正常,而
引发错误:NoMethodError: private method `eval' called for #
如果我在描述中反转整数和浮点数,整数和浮点数都会给我这个错误。我认为这可能与有限的前瞻性有关,但我在任何文档中都找不到任何信息,甚至无法涵盖在“或”上下文中进行评估的想法
更多信息可能会有所帮助。这是这两个 parse() 块的 pp 信息。
浮子:
Integer... 请注意,它似乎已被定义为遵循整数规则,但未捕获 eval() 方法:
更新:
我遇到了我的特殊问题,但我不知道为什么:
这对存在的文档没有意义,但只是删除额外的括号使匹配包括 Integer1 类以及 Integer0。Integer1 显然是持有 eval() 方法的类。我不知道为什么会这样。
我仍在寻找有关树梢的更多信息。
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>
parsing - 具体和抽象语法树的标准格式
我有一个爱好项目的想法,该项目执行一些代码分析和操作。该项目将需要给定源文件的具体和抽象语法树。此外,两棵树之间的双向引用会很有帮助。我想避免转录语法来构建我自己的词法分析器和解析器的工作。
是否有描述具体或抽象语法树的标准格式?是否有任何广泛使用的工具链支持输出到这些格式?
我没有考虑特定的目标编程语言。任何流行的原型都可以,但我更喜欢我熟悉的原型:Python、C#、Javascript 或 C/C++。
我希望能够通过工具或库运行源文件并取回两棵树。在理想情况下,在代码上运行该工具是可行的,因为它正在由用户编辑并且可以容忍错误。同样,我只是想开发一个原型,所以这些要求非常宽松。
谢谢!
grammar - BNF 语法匹配
我的老师给了我两个 bnf 语法:
和四个与之匹配的字符串:
- dffd
- dddefddfe
- 德夫
- 专用的
我想出了其中两个,但其他两个让我难过。我不希望任何人告诉我答案,但如果有人能给我一些关于我哪里出错的提示,我将不胜感激。
compiler-construction - 如何从形式语法生成句子?
从语法生成句子的常用方法是什么?
我想要一种与解析器相反的算法。也就是说,给定一个正式的上下文无关语法(比如 LL),我想生成一个符合该语法的任意句子。我在这里使用句子来表示任何有效的文本主体,因此它实际上可以是一个完整的程序(即使它没有任何意义——只要它在语法上是正确的)。
示例语法:
示例生成程序:
parsing - 算术表达式的语法
我被分配了一项为算术表达式创建解析器的任务(带有括号和一元运算符)。所以我只想知道这个语法是否正确,它是否是 LL(1) 形式并且在为此构建解析表时遇到了真正的问题
优先级(从高到低)
二元运算符的结合性
parsing - 算术表达式的 First & Follow 集
我想知道我为这个语法制作的 FIRST 和 FOLLOW 集是否正确
java - 适合JavaME的语法编译器推荐?
我想解析一些数据,我有一个 BNF 语法来解析它。谁能推荐任何能够生成可在移动设备上使用的代码的语法编译器?
由于这是针对 JavaME 的,因此生成的代码必须是:
- 希望很小
- 对外来 Java 库的低依赖
- 不依赖于任何运行时 jar 文件。
ruby - 红宝石语法
我正在寻找 BNF 形式的 Ruby 语法。有正式版吗?
java - ANTLR 可以生成最终的解析器类吗?
我正在使用 ANTLR 3.1 和 ANTLRWorks 在 Java 中生成解析器类。如果我用 Java final 关键字标记生成的类,解析器的性能会更好。问题是:每次从 ANTLR 语法重新生成代码后,我都会手动添加此关键字。无论如何,在语法中,告诉 ANTLR 将 final 关键字添加到生成的解析器类定义中吗?