小编dad*_*der的帖子

乔姆斯基的层次结构和编程语言

我正在尝试学习与编程语言相关的Chomsky Hierarchy的某些方面,我仍然需要阅读Dragon Book.

我读过大多数编程语言都可以解析为无上下文语法(CFG).就计算能力而言,它等于下推非确定性自动机之一.我对吗?

如果这是真的,那么CFG怎么能保持一个不受限制的语法(UG),这是完整的?我问,因为即使编程语言由CFG描述,它们实际上也用于描述图灵机,所以通过UG.

我认为这是因为至少有两个不同的计算级别,第一个,即CFG的解析侧重于与语言结构(表示?)相关的语法,而另一个侧重于语义(意义,解释)数据本身?)与编程语言的功能有关,这是完整的.再次,这些假设是对的吗?

programming-languages turing-machines context-free-grammar formal-languages chomsky-hierarchy

15
推荐指数
1
解决办法
3343
查看次数

这些语法和最小解析器可以识别它吗?

我正在努力学习如何制作编译器.为了做到这一点,我读了很多关于无上下文的语言.但是有一些我自己无法得到的东西.

因为它是我的第一个编译器,所以有一些我不知道的实践.我的问题是在构建一个解析器生成器,而不是编译器和lexer.有些问题可能很明显..

我的读物包括:自下而上的解析,自上而下的解析,正式的语法.显示的图片来自:Miscellanous Parsing.全部来自斯坦福CS143级.

解析器/语法层次结构

以下是要点:

0)(模糊/明确)和(左递归/右递归)如何影响一种算法或另一种算法的需求?还有其他方法来限定语法吗?

1)模糊语法是具有多个解析树的语法.但是,最左推导或最右推导的选择是否应该导致解析树的单一性?

[编辑:在这里回答]

2.1)但是,与k相关的语法是否模糊?我的意思是给出一个LR(2)语法,对于LR(1)解析器是不明确的,对于LR(2)解析器是不明确的?

[编辑:不,不是,LR(2)语法意味着解析器将需要两个前瞻标记来选择正确的规则来使用.另一方面,模糊语法是可能导致多个解析树的语法.]

2.2)所以一个LR(*)解析器,只要你能想象它,根本就没有模糊的语法,然后可以解析整套无上下文语言?

[编辑:由Ira Baxter回答,LR(*)不如GLR强大,因为它无法处理多个解析树.]

3)根据以前的答案,以下内容可能是自相矛盾的.考虑到LR解析,模糊语法会引发shift-reduce冲突吗?一个明确的语法也会引发一个吗?以同样的方式,减少 - 减少冲突怎么样?

[编辑:就是这样,模糊的语法导致转移减少和减少 - 减少冲突.通过对立,如果没有冲突,语法是单义的.]

4)解析左递归语法的能力是LR(k)解析器优于LL(k)的优势,它们之间的唯一区别是什么?

[编辑:是的.]

5)给G1:

G1 :
S -> S + S
S -> S - S
S -> a
Run Code Online (Sandbox Code Playgroud)

5.1)G1是左递归,右递归和模糊,我是对的吗?它是LR(2)语法吗?人们会明白这一点:

G2 :
S -> S + a
S -> S - a
S -> a
Run Code Online (Sandbox Code Playgroud)

5.2)G2仍然含糊不清吗?G2的解析器是否需要两个前瞻?通过分解,我们有:

G3 :
S -> S V
V -> + a
V -> - a
S -> …
Run Code Online (Sandbox Code Playgroud)

grammar parsing context-free-grammar

14
推荐指数
1
解决办法
1480
查看次数

如何使用PHP // Thread // Mutex // Cond

PHP显然支持Thread类.还有一个MutexCond类.然而,需要用良好的选项编译它并添加PECL扩展来获得它.

有一个很好的教程从哪里开始?清楚显示每个类别/方法合理使用的东西.

我只是不知道如何处理这些类.我需要一些具体的例子来做非常简单的事情,展示尽可能多的方法.

谢谢.

php multithreading mutex

6
推荐指数
1
解决办法
7790
查看次数