一个程序设计语言是一个记号系统,

  • 如同自然语言,它的完整定义包括语法和语义。
  • 语法是指一组规则,
    • 用它可以形成和产生一个合适的程序。
    • 目前广泛使用的手段是上下文无关文法,
    • 即用上下文无关文法作为
      • 程序设计语言语法的描述工具。
  • 语法只定义什么样的符号序列是合法的,与这些符号的含义毫无关系,
  • 对Pascal程序来说,一个上下文无关文法可定义符号串A:=B+C是合乎语法的,A:=B+不是。
  • 若B实型,C布尔,或B、C中任何一个没事先说明,
    • 则A:=B+C仍错,也就是说程序结构上的这种特点
    • 类型匹配、变量作用域等是无法用上下文无关手段检査的,
      • 这些属于语义分析。
  • 程序设计语言的语义分两:静态语义和动态语义。
  • 静态语义是一系列限定规则,
    • 并确定哪些合乎语法的程序是合适的;
  • 动态语义也称运行语义或执行语义,
    • 表明程序要做啥,要计算啥。

阐明语法的一个工具是文法,

  • 这是形式语言理论的基本概念。
  • 本章介绍文法和语言的概念,
    • 重点论上下文无关文法及其句型分析中的有关问题

阐明语义比阐明语法困难,

  • 形式语义学的研究取大进展,
  • 但仍没有哪一种公认的形式系统
    • 可用来自动构造正确的编译系统。
  • 本书不对形式语义学介绍。

2.1 文法的直观概念

给出文法和语言的定义前,先直观认识下文法的概念。

当表述一种语言时,

  • 无非是说明这种语言的句子,如果语言只含有穷多个句子
  • 则只需列出句子的有穷集就行,
  • 但对于有无穷多个句子的语言
    • 如何给出它的有穷表示

自然语言为例

  • 无法列出全部句子,但可给出一些规则,用这些规则来说明(或定义)句子的组成结构,
  • “我是大学生”是汉语的一个句子。
  • 汉语句子可由主语后随谓语而成,
    • 构成谓语的是动词和直接宾语,
  • 用第1章用过的EBNF表示这种句子的构成规则

2 文法和语言

相关文章:

  • 2022-12-23
  • 2021-06-20
  • 2021-12-02
  • 2021-08-27
  • 2022-12-23
  • 2021-10-27
猜你喜欢
  • 2021-07-30
  • 2021-07-21
  • 2021-07-07
  • 2021-07-18
  • 2021-06-23
  • 2021-11-15
相关资源
相似解决方案