context-free-grammar相关内容
我开始使用 NLTK库,我想检查一下英语句子是否正确是否. 示例: “他看见鲍勃"-不正确 “他看见鲍勃"-正确 我阅读了此,但这对我来说很难. 我需要一个简单的例子. 解决方案 语法检查是NLP研究的活跃领域,因此目前尚无100%的答案(甚至可能没有80%的答案).最简单的方法(或至少是一个合理的基线)是一个n-gram语言模型(规范话音长度的LM概率并为“语法"
..
我正在学习问题中引词之间的区别.我可以找到的每个参考都使用示例: {(a^i)(b^j)(c^k)(d^l) : i = 0 or j = k = l} 以显示两者之间的差异.我可以找到一个使用常规引理“反证"它的示例. 选择w = uvxyz,s.t. | vy | > 0,| vxy |
..
我使用的语言是{a^i b^j c^k | i,j,k>=0 & i>j & j>k} 我首先假设为我选择了一些m,使得一个字符串 z = a^m b^(m-1) c^(m-2) 然后将字符串拆分为(z =) uvwxy,以使vx不为空,而#(vwx)
..
这里是语法,应该用逗号作为分隔符来描述嵌套花括号的语言: L ::= {L} | L,L | 我希望语法能接受和拒绝更多的字符串示例: 接受: {,{,,{,}},,{,}} {{{{}}}} {,{}} 拒绝: {}{} {,{}{}} {{},{} 解决方案 手工完成: L :: = { L } | { L } , | , L | ε 或者,我
..
从此维基百科页面: 之间的根本区别 上下文无关的语法和解析 表达语法是PEG的 选择运算符已订购.如果 第一个选择成功,第二个 替代方案被忽略.因此下令 选择不是可交换的,不像 无序选择,如无上下文 语法和正则表达式. 有序选择类似于软 削减一些逻辑运算符 编程语言. 为什么PEG的选择运算符会使匹配短路?是因为要尽量减少内存使用(由于记忆)? 我不确定正则表达式中的选择运算符是
..
这篇关于浏览器如何工作的文章解释了CSS如何无上下文,而HTML是不。但是,JavaScript的上下文是免费的吗? 我正在学习CFG和正式证明,但距离理解如何解决这个问题还有很长的路要走。有没有人知道JavaScript是否没有上下文? 解决方案 不,JavaScript不是一种无上下文的语言。 非常接近1,ECMAScript 5规范确实使用上下文 - 免费语法 1 来描述
..
EcmaScript中的许多作品都带有以下“修饰符”: [收益率,Await,In,Return] 以下是一些例子: ArrayLiteral [Yield,Await]: ... ElementList [Yield,Await]: ... AssignmentExpression [+ In,?收益率,?等待] 我在规范中搜索了
..
我曾经认为C ++是一个“奇怪的”,与 的所有含糊不清,但在尝试实现解析器之后,我想我找到了一个打破 每个 语言的示例,该语言使用 用于泛型类型: f(g (j)); 这可能在语法上被解释为泛型方法调用( g ),或者可以解释为给出 f 两次比较的结果。 如何做这些语言(特别是Java,我认为应该是LALR(1) -parsable?)解决这种语
..
我试图通过实现一个小的正则表达式分析器来学习Parsec。在BNF中,我的语法如下所示: EXP:EXP * | LIT EXP | LIT 我试图在Haskell中实现这个功能: expr = try star 尝试点亮 点燃 litE =做c
..
$ $ $ $ $ $ $ $ $ $ code> expression:expression BITWISE_OR xor_expression | xor_expression xor_expression:xor_expression BITWISE_XOR and_expression | and_expression and_expression:and_expression B
..
我目前正在写一个csv解析器。 csv格式的定义由 RFC4180 (由ABNF定义)给出。所以csv的定义绝对是一个没有contex的语法。但是,我想知道csv是否是正规语法?所以我可以解析它只用一个有限状态机。 解决方案 如果是正规语法,可以通过有限状态机解析,那么是否也可以通过正则表达式解析? div> 这个问题没有明确的答案,因为CSV是一个非常宽松的格式。在我观察到的CSV阅读器
..
我们如何知道下面的语法中的哪些逻辑操作(或,和不是)具有更高的优先级?这种问题有一个通用的方法吗? X→X或Y | Y Y→Y和Z | Z Z→不是Z | (X)|真| false 解决方案 这是一个示例方法: code> expr - > addExpr; addExpr - > multExpr(('+'|' - ')multExpr)*; mult
..
我尝试通过消除间接递归,然后直接递归来消除CFG中的左递归,因为此算法显示。 我会用这个语法: A = A a | A B C | B C | DD 当 i = 1 和 j = 1 我们正在寻找将 A - > A r 格式的所有作品替换为: A - >δ 1 γ | δ 2 γ | .. | δ k γ 所以当我看看匹配的 A -
..
我试图从语法的以下提取中消除左递归 - expression:= fragment((+ | - | * | /)fragment)* fragment:= identifier |数字| (+ | - )片段|表达式 问题是表达式可以去片段,可以去表达式。我已经尝试了一堆方法来消除它,一些看起来像他们工作(在JavaCC),但我不能确定他们的正确性,和b)肯
..
假设我有以下CFG。 A - > B | Cx | EPSILON B - > C | yA C - > B | w | z 现在,如果我尝试找到 FIRST(C)= FIRST(B)U FIRST(w)U FIRST(z) = FIRST(C)U FIRST(yA)U {w,z} b $ b 也就是说,我要进入一个循环。 因此,
..
如何为要从头设计的新编程语言(命令式编程语言)定义语法(无上下文)。 换句话说: 解决方案 一次只能执行一次步骤。 没有认真的,从表达式和运算符开始,向上到语句,然后到函数/类等。保存一个用于什么标点符号的列表。 在并行定义语法中引用变量,数组,散列,数字文字,字符串文字,其他内置文字。 要检查你的语法是否有意义关注一个关卡(文字/变量,运算符,表达式,语句,函数等
..
我有这个语法 S-> S + S | SS |(S)| S * | a 我想知道如何消除这个语法的左递归,因为 S + S 真的让人困惑... 解决方案 让我们看看是否可以简化给定的语法。 S - > S * | S + S | SS |(S)| a / p> S - > S * | SQ | SS | B | a
..
我目前正在学习解析器。我一直在看视频,并试图写代码,但我开始很难理解。我认为可能会理解一个解析器的动机可以帮助我们理解它们的工作原理以及它们应该如何构建。 解析器将获取一串令牌并创建一个解析树。我可以理解一个解析树是什么,但我只是不知道如何使用。最终,编译器使用解析树来创建机器代码,但它究竟是如何做到这一点?可以有人给我一个例子吗? 还有什么是解析(和解析树)用于? 解决方案
..
标准是否指定官方的C ++语法? 我搜索过,但没有找到它。 另外,我想详细了解一下C ++语法,比如它所属的语法类别等等。任何指向正确方向的链接都会有所帮助。 按类别,我的意思是 取自这里。 解决方案 是的, 语法在整个标准中有详细的描述,并在附录A:语法摘要(在C ++ 03标准和C ++ 0x final final draft draft。) 您可
..
我已经在几个月前在D新闻组发布了这个消息,但由于某种原因,答案从来没有说服我,所以我想我会在这里问。 D的语法显然无上下文/ a>。 然而,C ++的语法不是(即使没有宏)。(请仔细阅读) em>现在批准,我什么也不知道(正式)关于编译器,词法分析器和解析器。所有我知道的是从我在网络上学到的。 这里是什么(我相信)我已经理解上下文,在不那么技术lingo: 语言的语法
..