zoukankan      html  css  js  c++  java
  • 4.文法和语言总结与梳理

    1. 梳理第二章的内容,写一篇理解与总结。

    (1)文法的形式定义 

     所谓文法就是描述语言的语法结构的形式规则。

     文法的四元组:

      VN为非终结符集

      VT为终结符集

      P为规则(α→β)的集合

      S为识别符或开始符,至少要在一条规则中作为左部出现。

    (2)文法的类型(文法分为0 型,1 型 ,2 型,3 型四种类型)

    设G=( Vx,Vr,P,S),如果它的每个产生式a β是这样种结构: a∈(V,∪V~)°且至少含有一个非终结符,而β∈(VN∪V+)° ,则G是一个0型文法。

    设G=( V;N,Vr,P,S)为一个文法,若P中的每一个产生式a→β均满足(β≥lal ,仅仅S→ε除外,则文法G是1型或上下文有关的。

    设G=( VN,VzP.S),若P中的每一个产生式a β满足: a是一个非终结符,β∈(Vw∪Vr)* ,则此文法称为2型的或上下文无关的。

    4种文法类型的定义是逐渐增加限制的,因此每一种正规文法都是上下文无关的,每一种上下文无关文法都是上下文有关的,而每一种上下文有关文法都是O型文法。称O型语言。

    (3)句子组成结构

    (4)语言

      推导:从开始符号出发,每个重写步骤把一个非终结符号替换为它的某个产生式体。

      最左推导:总是选择每个句型的最左非终结符号。

      最右推导:总是选择每个句型的最右非终结符号。

      语法树:一种描述上下文无关文法的句型推导的直观工具,也称推导树。

      文法的二义性:如果一个文法存在某个句子对应两棵不同的语法树,则说这个文法是二义的。

     (5)句型分析

       句子:如果S Þ* x,且x∈VT* ,则称x是G产生的一个句子
       E Þ E + E ÞE + E * E
       E Þ4 id + id * E
      句型:如果SÞ*α,α∈(VT∪VN)*则称α是G产生的一个句型 
     

    2. 尝试写出PL/0 语言的文法。(或者你认为比较好的语言规则)

    整数n

    <数字>->0|1|2...|8|9

    标识符i

    <标识符i>-><字母><数字>

    表达式

    <表达式>-> [+|-]<项>{<加减运算符><项>}

    条件语句

    <条件语句>-> if<条件>then<语句>

    赋值语句

    <赋值语句>-><标识符>-><表达式>

    复合语句

    <复合语句>-> begin<语句>{;<语句>} end

    函数

    程序

    <程序>-><分程序>.

    <分程序>->[<常量说明部分>] [<变量说明部分>][<过程说明部分>]<语句>

  • 相关阅读:
    Valid Parentheses [LeetCode 20]
    线性回归的Spark实现 [Linear Regression / Machine Learning / Spark]
    逻辑回归的分布式实现 [Logistic Regression / Machine Learning / Spark ]
    Python爬虫之豆瓣-新书速递-图书解析
    安装软件包
    打包与压缩
    linux与linux间,互相拷贝文件
    网络管理
    重定向和管道
    索引
  • 原文地址:https://www.cnblogs.com/zqy1004/p/11600016.html
Copyright © 2011-2022 走看看