zoukankan      html  css  js  c++  java
  • 2.1文法

     文法是最重要的而且是最基础的。正规式和有穷自动机。

     一个终结符不能为α。一个终结符是一个原子量,是不能再被分解的一个量。它是最终状态了,不能转换成其他状态了,也不能够用其他的几个量进行代替。终结符是不能单独在左边的。而非终结符恰恰相反。非终结符可以理解为可以拆分的元素。一个程序可以理解为非终结符。因为一个程序可以拆分为很多个语句。大写字母表示非终结符,小写字母表示终结符。

     

    S是开始符,S、A、B为非终结符。p、q、a、b、c、d为终结符。

    VN是非终结符的集合。VT是终结符的集合。P是推导式的集合。S是开始符。

    学习编译原理对一些基本的概念进行记忆。记忆之后才是理解。最基础的东西必须靠记忆。

    0型文法要记忆的地方:α∈(VN∪VT)*的意思是α属于VN∪VT的闭包。VN∪VT不管是终结符还是非终结符,闭包的意思是用集合当中任意的元素进行组合,拼接起来,形成的一个串。

    一个串它的所有的元素只要是为VN∪VT当中的元素,那么这个串就属于VN∪VT的闭包。不管这个串是多长。这个串也可以说全部是终结符的,这个串也属于VN∪VT的闭包。

     α没有非终结符它就不属于0型文法了。对于β的要求就放开了,只要是VN∪VT这个闭包当中的元素,就可以成为β。

    0型文法是短语文法,它的能力相当于图灵机。


    不需要深究什么是线性有界自动机。重点记忆1型文法是上下文有关文法有时候问你的不是0型文法或者是1型文法,它问你的是上下文有关文法或者是上下文无关文法。1型文法==上下文有关文法。|β|表示串的长度。


    2型文法是上下文无关文法。1型文法是上下文有关文法。如果一个文法是2型文法,那么它至少是1型文法。

  • 相关阅读:
    Java实现 LeetCode 394 字符串解码
    Java实现 LeetCode 394 字符串解码
    Java实现 LeetCode 392 判断子序列
    Java实现 LeetCode 392 判断子序列
    Java实现 LeetCode 392 判断子序列
    Java实现 LeetCode 391 完美矩形
    Java实现 LeetCode 391 完美矩形
    Java实现 LeetCode 391 完美矩形
    Java实现 LeetCode 390 消除游戏
    Java实现 LeetCode 390 消除游戏
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/6919926.html
Copyright © 2011-2022 走看看