标签: context-free-grammar

语法:如何添加优先级

假设我有以下用于简单计算器语言的上下文无关语法:

S->TS'
S'->OP1 TE'|e
T->FT'
T'->OP2 FT'|e
F->id|(S)
OP1->+|-
OP2->*|/
Run Code Online (Sandbox Code Playgroud)

可以看到,* 和 / 的优先级高于 + 和 -。但是,如何添加另一级优先级?例如指数、^、(例如:3^2=9)或其他什么?请解释一下您的程序以及如何到达那里的原因,以便我可以为其他操作员做这件事。

grammar operator-precedence context-free-grammar

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

这种无上下文的语法是正则表达式吗?

我的语法定义如下:

A -> aA*b | empty_string
Run Code Online (Sandbox Code Playgroud)

A正则表达式吗?我对如何解释BNF语法感到困惑.

regex bnf context-free-grammar

2
推荐指数
1
解决办法
1848
查看次数

为给定的上下文无关语法生成符号串(句子)

我有一个简单的语法,如

S::=a S b
S::=[] (empty string)
Run Code Online (Sandbox Code Playgroud)

现在我想为上面的语法编写一个解析器

cfg('S', [a,'S',b])
Run Code Online (Sandbox Code Playgroud)

通过最左边的推导产生一个句子aaabbb.

我不够好处理prolog中的dcg/cfg.所以请帮助我这个例子,以便我可以继续尝试更大的东西.

prolog context-free-grammar dcg

2
推荐指数
1
解决办法
1014
查看次数

用NLTK检查英语语法

我开始使用NLTK库了,我想检查一下英语句子是否正确.

例:

"他看到鲍勃" - 不正确

"他看到鲍勃" - 对

我读过这篇文章,但这对我来说很难.我需要一个更简单的例子.

grammar nlp nltk context-free-grammar

2
推荐指数
1
解决办法
2976
查看次数

上下文无关语法和其他语法有什么区别?

哪些语法不是上下文无关的?请给我一些非上下文无关的例子。

Is this grammar context free?

A->aSb|aaS|aaaS|B
S->aSb|Bb|lambda
B->Bb|lambda
Run Code Online (Sandbox Code Playgroud)

programming-languages context-free-grammar

2
推荐指数
1
解决办法
4720
查看次数

自引用Regex是JavaScript

我想承认

"Str","Int","[Str]","[Int]","[[Str]]",...
Run Code Online (Sandbox Code Playgroud)

我以为我可以做点什么

(Str|Int|\[\1\])
Run Code Online (Sandbox Code Playgroud)

其中\1自引用组.我知道,从形式语言理论,正则表达式不能"指望"因此不可能跟踪的开闭[].

我可能需要一个无上下文语法,我如何在JS中这样做?

javascript regex context-free-grammar

2
推荐指数
1
解决办法
180
查看次数

如何在无上下文语法中告诉运算符的优先级

我们如何知道以下哪个逻辑运算(或者,而不是)在下面的自由语法中具有更高的优先级?有这种问题的一般方法吗?

X→X或Y | ÿ

Y→Y和Z | ž

Z→不是Z | (X)| 是的| 假

compiler-construction grammar context-free-grammar

2
推荐指数
1
解决办法
1359
查看次数

2种上下文无关语言的集合差异是否上下文无关?

我在互联网上搜索过,大多数人只是说上下文无关语言对于联合、连接、反转和 Kleene Star 是封闭的。它们是否也因设置差异而关闭?

set discrete-mathematics context-free-grammar formal-languages context-free-language

2
推荐指数
1
解决办法
3478
查看次数

编译器,查找FIRST语法集

我正在阅读着名的紫龙书第2版,并且无法从第65页获得关于创建FIRST集的示例:

我们有以下语法(终端加粗):

stmtexpr;
| if(expr)stmt
| for(optexpr; optexpr; optexpr)stmt
| 其他

optexpr→ε
| EXPR

书中建议以下是FIRST的正确计算:

FIRST(stmt)→{ expr,if,for,other } //就此达成一致

FIRST(expr;)→{ expr } //这是从哪里来的?

正如评论所暗示的那样,第二行来自哪里?

compiler-construction parsing context-free-grammar

2
推荐指数
1
解决办法
108
查看次数

什么是终端符号和非终端符号?

我正在阅读Rebol Wikipedia页面

“解析表达式是用解析方言编写的,与do方言一样,它是数据交换方言的面向表达式的子语言。与do方言不同,解析方言使用表示运算符和最重要的非终结符的关键字”

你能解释一下什么是terminalsnonterminals?我已经阅读了很多有关语法的内容,但不了解它们的含义。这是另一个经常使用此词的链接

grammar rebol context-free-grammar red

2
推荐指数
2
解决办法
238
查看次数