标签: context-free-grammar

3
推荐指数
1
解决办法
7694
查看次数

什么是模糊的上下文免费语法?

我对上下文无关语法中的歧义概念并不十分清楚.如果有人可以帮助我解释这个概念或提供一个好的资源,我会非常感激.

terminology context-free-grammar ambiguous-grammar

3
推荐指数
1
解决办法
1957
查看次数

什么是无上下文语法和巴克斯Naur形式?

有人可以用外行的话来解释:

  1. 什么是无上下文语法?

  2. Backus Naur表格是什么?

  3. 如何使用这种表示法?

  4. 如何进行字符串派生?

  5. 如何描述语言语法?

syntax bnf context-free-grammar

3
推荐指数
1
解决办法
7472
查看次数

无上下文语言的闭包属性以及与常规语言的交集

无上下文语言和常规语言的交集始终是无上下文的,但是在集合交集下不关闭无上下文语言.任何人都可以解释为什么如果所有常规语言都没有上下文,两个定理都是正确的(相反的情况并非总是如此)?

context-free-grammar regular-language

3
推荐指数
1
解决办法
4496
查看次数

ANTLR - 永远无法匹配以下替代方案

我无法理解为什么这个简单的语法 -

grammar Test;
file    :   ID;
ID  :   .*;
Run Code Online (Sandbox Code Playgroud)

导致此错误 -

Test.g:3:6: The following alternatives can never be matched: 1
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

antlr context-free-grammar

3
推荐指数
1
解决办法
699
查看次数

处理prolog上下文无关语法

鉴于CFG

S --> a S b | c | d
Run Code Online (Sandbox Code Playgroud)

我想写一个谓词,如语法('S',句子),它可以产生所有可能的

sentences like
sentence=acb,
sentence=acd,
sentence=c,
sentence=ab......................
Run Code Online (Sandbox Code Playgroud)

使用最左边的推导,如果遇到的符号是终端,它应该打印出该终端,如果遇到的符号是非终端 'S',它应该回溯并替换其中一个语法a S b或c或d并重复处理.

我不想要任何代码......只是帮我提一些如何开始的提示

prolog context-free-grammar dcg prolog-dif

3
推荐指数
1
解决办法
1003
查看次数

如何删除ANTLR3警告'多个替代品'

我在堆栈溢出中找到了与"多个替代"相关的问题,但没有什么有用的.这是我在antlr3中的g文件的一部分.

statement:
    selection_stmt
    | expression_stmt 
    | compound_stmt
    | iteration_stmt
    | return_stmt
    ;

selection_stmt:
    IF OPENB expression CLOSB statement (ELSE statement)?
    ;

expression:
    (var ASSIGN expression) => assignment 
    | simple_expression
    ;
Run Code Online (Sandbox Code Playgroud)

我面临的问题是我收到上述短语的警告ELSE statement.

(200):决策可以使用多个备选方案匹配输入,例如"ELSE":1,2结果,对于该输入禁用了备选方案2

谁能解释一下这里发生了什么?谢谢.

PS当我使用句法谓词时((ELSE)=>ELSE statement)?,警告消失.我也不明白这个原因.

grammar antlr context-free-grammar antlr3

3
推荐指数
1
解决办法
1308
查看次数

LR(1)解析器中的左递归

LR(1)解析器可以解析这种类型的语法吗?

S -> SA  | A
A -> aSb | ab
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个实现这种类型解析器的Java程序,但是我只能在没有左递归的语法上得到正确的结果.

parsing context-free-grammar lr-grammar

3
推荐指数
1
解决办法
4006
查看次数

是否可以为此语法编写递归下降解析器?

这个问题,涉及二进制运算符(+ - */)的表达式的语法不允许使用外括号:

top_level   : expression PLUS term
            | expression MINUS term
            | term TIMES factor
            | term DIVIDE factor
            | NUMBER
expression  : expression PLUS term
            | expression MINUS term
            | term
term        : term TIMES factor
            | term DIVIDE factor
            | factor
factor      : NUMBER
            | LPAREN expression RPAREN
Run Code Online (Sandbox Code Playgroud)

这个语法是LALR(1).因此,我能够使用PLY(yacc的Python实现)为语法创建自下而上的解析器.

为了进行比较,我现在想尝试为同一种语言构建一个自上而下的递归下降解析器.我已经改变了语法,删除了左递归并应用了左因子:

top_level   : expression top_level1
            | term top_level2
            | NUMBER
top_level1  : PLUS term
            | MINUS term
top_level2  : TIMES factor
            | …
Run Code Online (Sandbox Code Playgroud)

grammar parsing context-free-grammar ll-grammar lr-grammar

3
推荐指数
1
解决办法
559
查看次数

如何提取带括号分析的语法产生规则?

我有一个例句。“开门。” 我解析了一个句子以获取括号内的解析输出,如下所示。

(S(VP(VB打开)(NP(DT the)(NN门)))(..))

我需要提取产生已解析输出的CFG语法规则。我可以这样手动将它们写出来:

grammar = CFG.fromstring("""   
S -> VP NP   
NP -> Det N   
VP -> V   
Det ->'the '   
N -> 'door'   
V -> 'Open'   
""")  
Run Code Online (Sandbox Code Playgroud)

但这很耗时,如何自动生成带括号的语法规则?

python parsing nlp nltk context-free-grammar

3
推荐指数
1
解决办法
1953
查看次数