context-free-grammar相关内容

使用堆栈实现的LL(1)解析器:如何构建AST?

我目前正在手动构建一个解析器.它是LL(1)解析器.目前,它是一个很好的识别器:它的函数parse(List tokens)决定令牌是否是该语言的成员. 现在,我想为该输入构建相应的AST.但是,我知道如何以递归的方式实现它(已经做到了).也就是说,对于挑战,我使用具有经典算法的堆栈来实现我的堆栈: next ..
发布时间:2021-04-24 19:37:41 其他开发

使用Bison递归规则的麻烦,并使用它来存储值

我正在尝试为Newick文件格式树制作一个flex + bison扫描器和解析器,以便对其进行操作.解释的实现语法基于简化((标签和长度始终是相同类型,由flex返回))此示例. 从本质上讲,这是一种文件格式的解析器,该解析器表示具有一系列(递归)子树和/或叶子的树.主树将始终以; 结尾,并且所述树和其中的所有子树将在(和)之间包含一系列节点,并命名为以及由 name 和:length 指定 ..
发布时间:2021-04-15 19:48:58 其他开发

是否有在ANTLR和其他形式的BNF之间转换的工具?

是否有工具可以将ANTLR语法语法与其他BNF语法相互转换?有几种形式的Backus-Naur形式(BNF,EBNF,ABNF,W3C-BNF,XBNF ...)查看此列表.ANTLR语法语法似乎只是由示例描述的.我知道ANTLR语法文件包含的内容超过了上下文无关语法的规范,但您至少应该能够转换公共子集-有人自动完成了吗? 解决方案 Jakob写道: ANTLR语法语法似乎仅由示 ..
发布时间:2021-04-07 20:26:46 其他开发

如何证明语法不明确? - (S)| SS |()

我对语法比较陌生,想知道是否有人可以使用解析树帮助我确定下面的语法有多歧义?我知道它需要创建两个不同的字符串。 S-> (S)| SS |() 我可以将其默认转换为chomsky正常形式和greibach,但是 解决方案 证明语法歧义的最简单方法是找到带有两个不同解析的句子树木。 (或者两个最右边的导数,这是完全相同的东西。或者,如果您愿意,两个不同的最左边的导数。 ..
发布时间:2020-10-08 23:33:01 其他开发

我如何找出这种无上下文语法生成的语言?

我正在处理以下语法: G =({S,A},{a,b}, P,S) P = {S-> aAb,S-> bAa, A-> aSa, A-> S, A-> epsilon} 我需要找出L(G)。 问题是,我发现语法中的单词具有以下形式: 以a开头并以b结束,或者以b开头并以a结束,并且在这些字母之间,组合:ab,ba,aaba,abaa;然后通过在中间的a和b之间插入 ..
发布时间:2020-10-08 23:32:57 其他开发

类似于正则表达式的语法或CFG,用于生成级联字符串变量和文字的笛卡尔积

我正在编写一个模拟器,并希望通过使用不同的命令行参数集调用许多模拟器实例来运行研究。我已经阅读了这个问题和其他几个问题,它们似乎很接近,但是我实际上,我不是在寻找满足特定正则表达式的随机数据,我想要与正则表达式匹配的所有 all 字符串集。输入文件示例如下所示: myprogram。{version1 | version2} -arg1 {1 | 2 | 4} {-arg2 |} ..
发布时间:2020-10-08 23:32:54 其他开发

上下文无关的语法,不可能使用RegEx

我正在尝试找出是否有可能提供无法接受可以接受相同语言的正则表达式的CFG示例。 解决方案 由于常规机器/表达式只有有限数量(预定义)的状态,因此它无法“记住”(无限地)输入的早期部分。 因此,对于状态机来说,以下表达式是不可能的:a n b n (n∈ℕ) 对于n≤x,您可以制造这样的机器,其中x∈ℕ,但是对于from中的每个可能值,没有状态机可以做到。 ..
发布时间:2020-10-08 23:32:51 其他开发

正确的线性上下文无关文法

我有问题。我必须使用alphapet = {0,1}编写正确的线性上下文无关文法,其中数字0为偶数,数字od 1为奇数。我尝试写某事。 s-> [1],a。 s-> [0],b。 a-> []。 a-> [1],c。 a-> [0],b。 c-> [1],k。 c-> [0],b。 b-> [0],k。 b-> [1],d。 d-> [1 ..
发布时间:2020-10-08 23:31:27 其他开发

给定语法规则,如何生成所有可能的字符串?

在给定JSGF语法的情况下,我想生成它将映射到的所有终端字符串。例如,给定 A(B | C)D [E] ,我期望的输出将是: ABDE ACDE ABD ACD 我决定从最简单的项目开始,即可选的支架,但很快就碰到了砖墙。它适用于1个项目,但不适用于具有替代项目的项目。任何意见,将不胜感激。 我现在所拥有的: import re ru ..
发布时间:2020-10-08 23:31:20 Python

证明上下文无关语法是规则的

我知道,要证明一种语言是非常规语言,可以使用泵激引理。我想我知道它是如何工作的,但是当涉及到上下文无关语法是(或者不是很规则)时,我遇到了很大的问题。 以下是我无法理解如何显示常规(或非常规)CFG的示例: i)S→NP VP ii)NP→DET N iii)VP→电视NP iv)N→NN v)N→AN vi)NP→玛丽|约翰 vii)DET→一个|他的| b ..
发布时间:2020-10-08 23:31:16 其他开发

C语言中的上下文无关文法

我分配了一个程序,用C编写一个程序,该程序使用以下上下文无关文法显示一些(n S-> AA | 0 A-> SS | 1 我对如何做到这一点了解很少,但是在对它们进行了越来越多的分析之后 现在,我打算制作一个数组并随机更改 [...,A,.. 。] 表示 [...,S,S,...] 或 [...,1, ...] 直到只有0和1,然后检查是否已经随机生成了同一 ..
发布时间:2020-10-08 23:31:14 其他开发

构造一个CFG

L1 = {a ^ i b ^ j | i,j> = 0} 我的尝试: S = SA | e A = aAB | e B = bB | e 我无法确认我的答案,这是正确的吗? 解决方案 这是不正确的,因为无法获得单个“ b”(或任何数量的“ b”而没有任何形式) (我认为您可以通过只更改一个字母来解决它; o) PS ..
发布时间:2020-10-08 23:30:11 其他开发

是否正确使用抽水引理?

我正试图通过Pumping Lemma证明以下语言不是正常语言。但是我不确定自己是否正确地完成了操作。 {L = a 2 n | n> = 0} 到目前为止,我所做的是: s = a 2 p x = a 2 i y = a 2 j z = a 2 pij 因此xy 2 z = a 2 p + j 这意味着a 2 p + j > a 2 p ,使语言 ..
发布时间:2020-10-08 23:30:05 其他开发

支持歧义的Java CFG解析器

我正在寻找使用Java实现的CFG解析器。我正在尝试解析一种自然语言。我需要所有可能的解析树(模糊性),而不仅仅是其中之一。我已经研究了许多NLP解析器,例如斯坦福解析器。但是它们大部分都需要统计数据(我没有的树库),并且很难将其适应新的语言。 我找到了一些解析器生成器,例如ANTRL或JFlex,但我不确定它们是否可以处理歧义。那么哪个解析器生成器或Java库最适合我呢? 预先感谢 解 ..
发布时间:2020-10-08 23:30:00 Java开发

为什么是s> ^和A->一种 ?在上下文无关文法中

我一直在阅读:“创建上下文无关语法的提示“ 出于学习目的而发布,我几乎理解了这个概念,但是我不太理解以下内容。 如果我们有: L = {a m b n | m> = n}。 我了解这一点: S-> B B-> aBb A-> aA 但是我不明白的是将这些特定值加到最后的概念,例如: S-> B | ^ B-> aBb | A A ..
发布时间:2020-10-08 23:29:57 其他开发

上下文无关文法中的左递归规则

因此,我一直在阅读的内容都说CFG中的左递归规则无限遍历,并显示了将其转换为右递归规则的过程,并使用alpha和beta术语来表示多个非终结符(我认为我说对了)。所以在我看来,处理LL解析器时左递归规则=坏。 那么是否存在左递归规则可接受/理想的情况? ?如果不是这样,为什么左递归规则除了设计不良或用来描述右递归规则的“逆”(轻度使用的术语)之外还存在? 一个家庭作业问题,但这与我的课 ..
发布时间:2020-10-08 23:29:54 其他开发

是否存在表示正则表达式的正则语言?

具体来说,我注意到正则表达式本身不是正则语言。因此,我无法使用正则表达式来解析给定的正则表达式。因为正则表达式本身的语言是上下文无关的,所以我需要使用解析器。 有没有办法以表示结果字符串可以表示正则表达式的方式 注意:我的问题不是关于是否有一个与当前regexe语法匹配的regexp,而是是否存在一个“表示形式”对于我们今天所知的正则表达式(可能不像我们今天所知道的那样整洁)可以使用正 ..
发布时间:2020-10-08 23:29:43 其他开发