问题标签 [ebnf]
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.
ebnf - 元标识符中的 EBNF 空白
我在这里查看了 EBNF 的 ISO 规范 pdf (除了在 ISO 网站上,我找不到官方的,它似乎要花钱),我不太了解空格。
有谁知道官方标准是否允许元标识符中有空格?根据标准文档(第 8.1 节)中的元标识符,我会说不,但是如果您看一下同一标准文档中的相同示例,它似乎会说是。
在该文档 8.1 顶部的评论中,似乎是说它正在使用自身定义 EBNF。我对此感到困惑的是这样的行:
元标识符本身应该是一个元标识符,但据我所知,它不适合元标识符(字母然后是任何数量的数字或字母)。
有谁知道发生了什么?
parsing - EBNF语法解释
我如何将其解释为 ENBF 语法?
我可以使用这个语法生成任何语句的解析树和推导,但是在使用 EBNF 时遇到了问题。
parsing - POSIX sh EBNF 语法
是否有现有的 POSIX sh 语法可用,或者我必须直接从规范中找出它?
请注意,我对纯sh不太感兴趣;一个扩展但符合标准的 sh 对于我的目的来说也很好。
ebnf - 更大粒度的铁路图生成器?
是否有一个 EBNF 铁路生成器可以创建更大的块,而不是每个语法生成一个图表?
我已经尝试过http://bottlecaps.de/rr/ui并且非常好:可以从 W3C 规范中抓取 EBNF 语法(例如http://www.w3.org/TR/sparql11-query/),生成一个带有嵌入 SVG 的单个 XHTML 或带有许多 PNG 的 zip 交叉链接定义和用法。
但是,SPARQL 1.1 语法有 173 个产生式。当每个产品都有一张图表时,很难理解。我正在寻找类似这样的块:http: //ontologicalengineering.blogspot.com/2008/12/sparql-railroad-diagram-from-hell.html
grammar - 我将如何规范化以下 ANTLR 语法规则以消除左递归?
我希望能够治疗:
作为函数类型。我如何规范这个(精简的)语法?
c++ - 基于 EBNF 语法的 C++ 中的下降递归解析器实现
我已经在 C++ 中实现了基于 EBNF 语法及其伪代码的下降递归解析器。这是代码:
这个程序只是从用户那里获取一个输入(输入将是一个没有空格的有效赋值语句)。检查赋值语句是否正确进行了防晒。然后,打印一条接受或拒绝输入字符串的消息。
我这个实现的目的是产生一个解析器。我有这个代码,它正在工作/识别正确的赋值语句。但我无法将其实现为解析器:它将一个 .cpp 文件作为参数,逐个字符地检查它,看看它是否有正确的赋值语句。
例如,如果我的解析器的名称是 userParser.cpp,而包含赋值语句的用户代码文件是 sample.cpp,那么命令 Like: userParser sample.cpp 应该解析并检查文件中赋值语句的正确语法。请指导我将 c++ 实现实现为解析器。谢谢你。
antlr - EBNF 语法 (ANTLR)
我在 ANTLRWorks 中遇到了 EBNF 语法问题:
我希望 CLASSNAME 始终以大写字母开头,并且它可以由数字、大写或小写字母组成。
错误日志:
谁能帮我解决这个问题?提前致谢。
问候, Hladeo
编辑:
所以如果片段关键字不引用标记,我应该使用它吗?这样使用fragment关键字会不会出错?
和另一个问题。
OBJECTNAME 应该至少包含一个字母(大写或小写无关紧要)和可选的另一个字母或数字 - 这部分代码有什么问题?例如,当我尝试输入时variable
- 没关系,但是当我以大写字母开头时Variable
出现错误:
java - 通过正则表达式或 ebnf 拆分
我有一个像这样的字符串:
是否有可能通过正则表达式或 ebnf 拆分它?我的意思是所有的东西[a-zA-Z0-9]
(我们不知道的东西)都将存储在数组中?
换句话说,通过使用这个正则表达式:
我想获得数组:
- 人
- +
- 名称
- 细绳
- +
- 名字
- 细绳
- -
- 年龄
- 整数
sql - 如何在语法上忽略 Antlr BNF 中表达式的一部分?
我想使用 Antlr 来解析 SQL 表 DDL 语句。但我只需要列标识符和列类型。我不关心任何约束,我想避免编写整个语法,特别是针对CHECK
约束,因为在我看来,这几乎是 SQL 的所有内容。
这是一个约束示例:
这是 BNF 的一部分,它以 Jonathan Leffler 的超链接 SQL BNF为模型:
我的问题是如何忽略任何布尔值表达式而不详细指定其内容?
我想忽略左右括号之间的所有内容。但是允许嵌套括号。所以我不能忽略所有内容,直到右括号。相反,我必须计算左括号和右括号。这如何在 Antlr (4) BNF 中表达?
c - 如何制作函数式语言编译器
我正在考虑为它编写一种语言和编译器作为一个夏季项目,并且很难找到有关如何使用解析树或 BNF/EBNF 来编写编译器的信息。总体目标是编写一个编译器,将简化的函数式语言语法解析为 c。我目前正计划用 c 语言编写这个编译器,但如果有人认为这会是一个更好的主意,我不介意用其他东西来做。(虽然我确实想手动完成,但不使用 LEX 之类的工具)
例如,如果我想创建语言ADD
并将其语法定义为(+ 3 4)
,则很容易为其生成 EBNF:
并且更容易制作解析树:
但是你会怎么做:
- 在 C 中表示 EBNF 或解析树
- 使用此数据获取有效的 C 代码
我觉得如果我能看到一个非常简单的工作示例,就足以让我朝着正确的方向开始。我有一种感觉,你们中的许多人会建议我阅读Dragon Book
(似乎是编译器的标准资源),所以我想让您知道它已经订购并发货。
预先感谢您对此提供的任何启示!
-维京绵羊人