context-free-grammar相关内容

如何修改解析语法以允许赋值和非赋值语句?

所以问题是关于下面的语法。我正在尝试一种小型解释语言,这很有趣(我们在课堂上了解了一些编译器设计,所以我想将其带入一个新的水平,然后自己尝试一些方法)。我在尝试使非终端符号 Expr 陷入困境。 声明:: = Expr SC Expr :: = / *我在这里需要帮助* / Assign :: =名称相等Expr AddSub :: = MulDiv {(+ |-)AddSub ..
发布时间:2020-10-08 23:29:40 其他开发

什么是模棱两可的上下文无关文法?

我不太清楚上下文无关语法中的歧义概念。如果有人可以帮助我并解释这个概念或提供很好的资源,我将不胜感激。 解决方案 T * U; 这是指针声明还是乘法?在知道真正的 之前,您无法知道。 p> 因此,表达式的语法取决于表达式的语义(含义)。那不是上下文无关的-在上下文无关的语言中,那只能是一件事,而不是两件事。 (这就是为什么他们不让这样的表达式成为 D “中的有 ..
发布时间:2020-10-08 23:29:38 其他开发

处理序言上下文无关文法

给出CFG S-> a S b | c | d 我想写一个谓词,例如 grammar('S',句子) strong>会生成所有可能的 句子,例如 句子= acb, 句子= acd, 句子= c, 句子= ab ...................... 使用最左导数,如果遇到的符号是 terminal ,则应打印出该终端,如果遇到符号为非终结符 ..
发布时间:2020-10-08 23:29:36 其他开发

在上下文无关语法中删除左递归

试图找出在上下文无关的语法中删除左递归的方法。我已经习惯了某些形式,但这使我有些困惑。 S-> S {S} S | (A)| a A-> {S} A | epsilon 我还必须设计一个不错的解析器,我可以做到。但是,弄清楚这种左递归(尤其是在第一个递归上)让我感到困惑。 解决方案 尝试一下: S-> a [{S} S] | ([A])[{S} ..
发布时间:2020-10-08 23:29:30 其他开发

BNF可以处理远期消费吗?

最近,我发现了python模块 pyparsing ,这是通过编写语法而不是解析器来解析数据的绝佳工具。我是无上下文语法的新手,因此请更正此问题中的所有错误假设。 Pyparsing可以实现BNF( Backus–Naur形式)的上下文无关文法。该语法可以递归,但是可以向前看吗?自从偶然发现这个问题以来,我一直在想这个问题的答案 。让我给你一个具体的例子。考虑以下字符串: 1 2 3 ..
发布时间:2020-10-08 23:29:28 Python

LR(1)-物品,向前看

我在理解LR(1)-项目中的超前原理方面遇到困难。 以一个具有以下语法的示例为例: S-> AB A->抗体b B-> d 然后,第一个状态如下所示: S-> .AB,{向前看} A-> .aAb,{向前看} A-> .b,{向前看} 我知道向前看是什么,但我不知道如何计算它们。 我已经在Google上搜索了答案,但找不到 ..

如何重写上下文无关的语法,使其成为LR(1)?

对于给定的上下文自由语法: S-> G $ G-> PG | P P-> id:R R-> ID R | epsilon 如何重写语法使其为LR(1)? 在解析输入“ id:.id”(其中“。”)时,当前语法具有移位/减少冲突。是解析器的输入指针。 此语法产生满足正则表达式(id:(id)*)+ 的语言 解决方案 很容易为同一语言生成LR(1) ..

查找二进制数为1的5可以被5整除的语法

我如何找到二进制数为5且可被1除为MSB的语法,并找到L的逆数? 因此,我需要一个生成如下数字的语法.. 5 = 101 10 = 1010 15 = 1111 20 = 10100 25 = 110011 等等 解决方案 我假设这是家庭作业,您只需要一个提示即可。 让我们考虑一个类似的问题,但是以10为底。我们如何为3整除的数字编 ..
发布时间:2020-10-08 23:27:55 其他开发

CFG用于python样式的元组

在无数次阅读了关于Stackoverflow上的“如何使用Regex解析HTML”的问题之后,我再次对语法产生了兴趣,抓起了大学脚本,几分钟后,我想知道自己过去如何我的考试。 作为一个简单的练习(我希望是这样的“简单”),我试图编写一个生成有效python元组的CFG(仅出于简单起见)使用标识符 a , b 和 c )。经过一段美好的时光,我现在想到了这个: G =({Tuple,T ..
发布时间:2020-10-08 23:27:53 Python

什么是上下文无关文法和Backus Naur形式?

有人可以用外行人的术语解释一下吗? 什么是无上下文语法? 什么是Backus Naur形式? 如何使用此符号? 如何进行字符串派生? 如何描述语言语法? 解决方案 上下文无关文法(CFG)G是四元组(V,Σ,R,S),其中 V:一组非终端符号 Σ:一组终端(V∩ Σ=Ǿ) R:一组规则(R:V→(VUΣ)*) S:起始符号 CFG示例: ..
发布时间:2020-10-08 23:27:39 其他开发

使用基于SRGS的自定义语法的自由格式文本

我正在尝试开发一个基于语音的应用程序,该应用程序可以接受用户输入作为语音并根据输入执行一些操作。这是我对这项技术的第一次尝试,我在开发它的同时正在学习。 我正在使用dotnet 4附带的Microsoft SAPI识别语音。到目前为止,我已经了解了它支持的两种模式。 语音识别(SR)有两种操作模式: 听写模式-一种不受约束的自由形式的语音 解释模式,使用 识别器针对特定语言提 ..
发布时间:2020-10-08 23:26:28 C#/.NET

身份表达,因素和术语?

我正在学习与上下文无关的语法,而且我不了解如何用C或C ++这样的编程语言来标识表达,因子和术语。 假设我们有一个赋值语句 id:= E ,其中E是任何算术表达式。 术语是什么?什么是表情?而实际代码中的因素是什么? 我们可以拥有 int i = 3,j = 14 int i = 3 + j * 14; 非常感谢。 解决方案 “因数”,“项” ..
发布时间:2020-10-08 23:26:26 其他开发

在Python中解析上下文无关的语法

Python提供了哪些工具来帮助解析上下文无关的语法? 当然可以自己滚动,但是我正在寻找一个可以为给定CFG生成解析器的通用工具。 解决方案 我热烈推荐 PLY -它是Python中的Lex / Yacc克隆,它以复杂的方式使用语言的自省功能,可以很自然地指定语法。回想一下,Yacc是CFG在可理解的DSL中的体现,它定义了解析方式。 我用它来实现用于ANSI C的解析器,并且 ..
发布时间:2020-10-08 23:25:15 Python

为什么这个有效的C? -({123;})等于123

可能重复: 是在括号内的块用于返回一个值有效的方法?在括号的哪个版本的c中,括号内的块用于返回有效值? 以下是典型MAX宏的类型安全版本(在gcc 4.4.5上有效): #define max(a,b)\ ({__typeof__(a)_a =(a ); \ __typeof__(b)_b =(b); \ _a> _b?_a:_b;}) 在这里,我们看 ..
发布时间:2020-10-08 23:25:06 C/C++开发

非回文的上下文无关文法

我需要一个CFG来生成回文以外的字符串。已经提供了解决方案,如下所示。(计算理论简介-Sipser) R-> XRX | S S-> aTb | bTa T-> XTX | X | X->一个| b 我对这种语法的工作原理有一个大致的了解。它要求通过产生 S->插入一个子串,该子串的任一半上都有相应的不等字母。 aTb | bTa ,从而 ..
发布时间:2020-10-08 23:25:04 其他开发

普通英语的乔姆斯基阶层

我试图找到乔姆斯基提出的形式语法的四个层次(无限制,上下文相关,上下文无关,常规)的简单(即非正式)解释。 自从我学习形式语法以来已经有一个时代了,各种定义现在让我难以理解。需要明确的是,我不正在寻找随处可见的正式定义(例如,此处和此处-我可以在Google以及其他任何人身上使用Google,甚至可以是任何形式。取而代之的是,我希望找到的是简洁明了的解释,它们并没有为了完整性而牺牲清晰度。 ..

上下文无关语言的闭包属性

我有以下问题: 语言L1 = {a ^ n * b ^ n:n> = 0}和L2 = {b ^ n * a ^ n:n> = 0}是 上下文无关的语言,因此它们在L1L2下关闭,因此L = {a ^ n * b ^ 2n A ^ n:n> = 0}也必须是上下文无关的,因为它是由 闭包属性生成的。 我必须证明是否是否正确。 所以我检查了L语言,但我认为它不是上下文无关的,所以我 ..
发布时间:2020-10-08 23:22:51 其他开发