Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler construction 类型3语法-正则表达式_Compiler Construction_Regular Language - Fatal编程技术网

Compiler construction 类型3语法-正则表达式

Compiler construction 类型3语法-正则表达式,compiler-construction,regular-language,Compiler Construction,Regular Language,我已经读到一个注释,类型3 grammers不能同时具有这两种产品 A-> aB A-> Ba 其中A、B为非端子,A为端子 我对类型3了解得足够多,但我无法理解上面的内容。如果你允许这两种产品同时出现,那么类型3的含义就会改变。您可以编写如下语法: A -> '(' B B -> A ')' A -> '1' 如果你假设A是起始非终结符,你的语言会给出所有的单词 ((...((1))...)) 其中两边的括号数相同。但是,这不是类型3语言(非正式地说,正确的

我已经读到一个注释,类型3 grammers不能同时具有这两种产品

A-> aB
A-> Ba
其中A、B为非端子,A为端子


我对类型3了解得足够多,但我无法理解上面的内容。如果你允许这两种产品同时出现,那么类型3的含义就会改变。您可以编写如下语法:

A -> '(' B
B -> A ')'
A -> '1'
如果你假设A是起始非终结符,你的语言会给出所有的单词

((...((1))...))

其中两边的括号数相同。但是,这不是类型3语言(非正式地说,正确的解析器需要计数,因此它不能是有限状态)。

如果允许这两种生成都发生,那么类型3的含义就会改变。您可以编写如下语法:

A -> '(' B
B -> A ')'
A -> '1'
如果你假设A是起始非终结符,你的语言会给出所有的单词

((...((1))...))

其中两边的括号数相同。然而,这不是一种类型3语言(非正式地说,正确的解析器需要计数,因此它不能是有限状态)。

这是常规语法定义的一部分,因此没有太多需要理解的内容。所以它一般来说没有错?它怎么会是“一般错误”呢?根据定义,任何包含
a->aB
格式规则和
a->Ba
格式规则的语法都不是常规语法。@larsmans是的。您需要理解符号以及它们所表示的对象类型。要掌握它,你需要知道它有什么用法。要想有用,你必须知道如何决定何时使用它。要了解其完整性,您需要在做出此定义(又名历史)的设计选择背后进行推理。理解这样的东西有很多层次,其中一些可能在这里还没有被开发。当一个人处于“理解的另一边”时,他通常只看到另一个定义,但隐含地认为这些东西是存在的。这是常规语法定义的一部分,所以没有太多需要理解的。所以一般来说这不是错的?怎么会是“一般错误”呢?根据定义,任何包含
a->aB
格式规则和
a->Ba
格式规则的语法都不是常规语法。@larsmans是的。您需要理解符号以及它们所表示的对象类型。要掌握它,你需要知道它有什么用法。要想有用,你必须知道如何决定何时使用它。要了解其完整性,您需要在做出此定义(又名历史)的设计选择背后进行推理。理解这样的东西有很多层次,其中一些可能在这里还没有被开发。当一个人处于“理解的另一边”时,他通常只看到另一个定义,但隐含地认为这些东西是存在的。