消除 E := EE+|EE-|id 的左递归
如何消除以下语法的左递归? E := EE+|EE-|id 使用通用过程: A := Aa|b 翻译为: A := b|A' A' := ϵ| Aa 将其应用到我们得到的原始语法: A = E, a …
上下文无关语法定义中的可选终止符与强制终止符
在有关编译器的书籍章节中,有以下语法定义和示例代码。 ... statement: whileStatement | ifStatement | ... // Other statement possibilities | '{…
使用 XML 的 EBNF 实现 XML 转换器
我正在考虑使用编译器生成器实现 XML 转换器的想法,该编译器生成器基于 W3C 的 XML 1.1规范,其中包括完整的EBNF语法。 更准确地说,我计划使用 Qi-Y…
是 C++ 上下文无关还是上下文相关?
我经常听到这样的说法:C++ 是一种上下文相关语言。 举个例子: a b(c) 这是变量定义还是函数声明? 这取决于符号c的含义。 如果 c 是一个变量,则 ab…
解析 Gmail 风格的高级搜索语法?
我想使用 Perl 解析类似于 Gmail 提供的搜索字符串。 示例输入为“tag:thing by:{user1 user2} {-tag:a by:user3}”。 我想将其放入树形结构中,如 {a…
如何消除以下语法中的左递归?
这是语法,它应该描述一种以逗号作为分隔符的嵌套大括号的语言: L ::= {L} | L,L | 我希望语法接受和拒绝的一些字符串示例: 接受: {,{,,{,}},,{,}}…
我如何构建生成这种语言的语法?
我正在研究有限自动机和 语法测试,我被这个问题困住了: Construct a grammar that generates L: L = {a^n b^m c^m+n|n>=0, m>=0} 我相信我的产…
分割字符串(尤其是在 Java 中使用 java.util.regex 或其他东西)
有谁知道如何在考虑到转义序列的情况下拆分字符上的字符串? 例如,如果字符为“:”,则“a:b”将被拆分为两部分(“a”和“b”),而“a:b”则根本不…