问题标签 [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.
python - 使用 ebnf 和空格进行 pyparsing
我正在使用http://pyparsing.wikispaces.com/file/view/ebnf.py来转换我的 ebnf 定义。
ebnf def 看起来像这样:
如果我加载文件并尝试解析如下字符串:
我得到:
有人有想法/解决方案吗?
coding-style - 编写好的 EBNF 语法的技巧
我正在为文档解析编写一些扩展的 Backus–Naur 形式语法。这些定义的语法有很多优秀的指南,但是关于如何设计和构建它们的在线指南却很少。
任何人都可以建议关于您喜欢如何编写这些的好文章(或一般提示),因为即使最终的解析树可以等效,似乎也有一种风格元素。
例如:
- 决定是否应该明确地标记换行符,或者只是将其视为空格?
- 非终结符的命名方案
- 处理长定义中的可选空格
- 何时使用错误的语法检查而不是让那些不匹配
谢谢,
parsing - 如何使用 EBNF 语法解析注释
在为语言解析器定义语法时,您如何处理文本中任何位置可能出现的注释(例如 /* .... */)?
当事物结构化时,从标签中的标签构建语法似乎效果很好,但评论似乎会抛出一切。
您只需要分两步解析文本吗?首先删除这些项目,然后再分解代码的实际结构?
谢谢
cobol - 这个 cobol 语法不处理 --9 图片
我在我的 javacc 中使用这个站点上的语法。除了一些图片陈述外,它还可以正常工作。例如----、---、---.99 或--9。
它似乎不喜欢超过一个破折号。
我需要改变什么来支持我的图片示例。
我搞砸了
但似乎没有任何效果。任何帮助深表感谢
编辑:
这是整行的正则表达式:
如果我想接受05 TEST3 REDEFINES TEST2 PIC X(10).
,我会将正则表达式更改为:
非常感谢到目前为止的帮助
grammar - PL/0 中的“奇数”表达式
给定以下 EBNF 语法(在 PL/0 的 wikipedia 上找到),“ODD”关键字前面的表达式是什么?我想将简单的语言实现为一个小项目,但我似乎无法弄清楚这意味着什么。有没有人在此之前或能够解释什么是奇怪的表达式,以便我可以正确地为该语言编写编译器?
scala - Antlr 左递归
我正在尝试将 EBNF 形式的 scala 中的后缀、中缀和前缀规则转换为 ANTLR,但在中缀表达式规则上看到与左递归有关的错误。
有问题的规则是:
如果我将 infixExpression 规则更改为:
然后它反而抱怨:
最后,有没有办法有条件地在 AST 中创建节点,这样如果只有规则的左侧部分为真,那么它就不会添加该级别?例如:
例如,假设我创建了遵循如下层次结构的语法:
如果解析的表达式是a || b
,则当前为该表达式创建的 AST 将是
我怎么能得到它,所以它只是得到conditional_or_expression
部分?
在 JavaCC 中,您可以只设置节点数量,例如:#ConditionalOrExpression(>1)
编辑:昨晚有点晚了,现在修改了中缀表达式!
最终编辑:我最终让它工作的方式是以下规则:
grammar - 将 BNF 转换为 EBNF
我需要知道如何将下一个 BNF 转换为 EBNF,这样可以帮助我更多地了解它们是如何工作的
注意:epsilon 表示空集
javascript - EBNF 语法解析器模块
你知道一个语法解析器模块(用 Ruby、Python、Javascript...编写),给定一个标记列表和一个类似EBNF的语法(作为一个简单的字符串传递),返回解析的树?我发现最接近这个的是SimpleParse,这是一个不错的库,但不幸的是它使用单步解析(无标记化)。如果可能的话,我宁愿不使用实现与语言本身纠缠在一起的库(pyparsing,treetop,...)。
我不担心词法分析/标记化,因为有很多可用的库(甚至编写自己的库也很容易),但实现 ENBF 解析器并不是一件容易的事。我检查了 Python wiki LanguageParsing并测试了其中一些无济于事(也许我忽略了我正在寻找的那个,有这么多......)
parsing - 为 LALR 解析器将 EBNF 转换为 BNF
我知道有几个帖子的标题相似。大多数链接到死网站 - 无论如何我有一个更具体的问题。
我正在尝试将XPath 规范中的 EBNF转换为直接的 BNF,以便我可以轻松地创建与 Bison 兼容的语法文件。
我已经有一段时间没有这样做了,我不记得递归属于生产的哪一边。我认为它是左边的 - 但我的“直截了当”的翻译在通过 Bison 生成的解析器运行时给我带来了纯简 XPath 表达式的语法错误。
因此,如果有人可以取笑我并参与进来-所以我不是在追鬼:
在以下Expr
规则中:
这是正确的翻译吗?(把递归放在左边):