日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

程序设计语言编译原理_编译原理学习笔记(二):高级程序设计语言

發布時間:2025/3/12 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序设计语言编译原理_编译原理学习笔记(二):高级程序设计语言 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

高級程序設計語言

一、語言概述

1.1 語法 v.s. 語義

  • 程序本質上是一定字符集上的字符串
  • 語法:一組規則,用它可以形成和產生一個合式(well-formed)的程序
    • 定義了程序的形式結構
    • 定義語法單位的意義屬于語義問題

  • 語義:一組規則,定義一個程序的意義
    • 例如 “關于函數調用時參數傳遞方法的描述” 屬于語義定義

1.2 作用域

  • 同一個標識符在不同過程中代表不同的名字
  • 作用域:一個名字能被使用的區域范圍
  • 規則:“最近嵌套原則”

1.3 標識符 v.s. 名字

標識符是語法概念,名字是語義概念。

「標識符」

  • 以字母開頭的,由字母數字組成的字符串

「名字」

  • 含義:標識程序中的對象
  • 意義和屬性:
    • 值:單元中的內容
    • 屬性:類型和作用域
  • 說明方式
    • 說明語句明確規定
      • int score
    • 隱含說明
      • FORTRAN 以 I,J,K,...,N 為首的名字代表整型,否則為實型
    • 動態確定
      • 走到哪里,是什么,算什么
  • 名字的綁定
    • 名字的綁定是指將標識符與所代表的程序數據或代碼進行關聯
    • 靜態綁定:發生在編譯過程中,如變量聲明、類型定義、函數定義
    • 動態綁定:發生在運行過程中,如多態、虛函數

「二者區別」

  • 標識符是語法概念
  • 名字有確切的意義和屬性

1.4 左值與右值

賦值語句:A := B

  • 名字的左值:該名字代表的存儲單元的地址
  • 名字的右值:該名字代表的存儲單元的內容

「簡單判斷」

  • 出現在賦值號左邊的值必須具有左值,出現在賦值號右邊的值則必須具有右值。

二、語法描述

2.1 基本概念

  • **字母表:**一個有窮字符集,記為
  • **字符:**字母表中每個元素
  • 字 / 字符串: 上的字(也叫字符串)是指由 中的字符所構成的一個有窮序列
  • **空字:**不包含任何字符的序列,記做
    • 空字是字符串,不是字符
  • 字的全體: 表示 上的所有字的全體,包含空字

  • 子集連接(積):
    • 的子集 U 和 V 的連接(積)定義為

  • n次積
    • V自身的n次積記為
    • 是 V 的閉包:
    • 是 V 的正規閉包:
    • 「區別」
      • 中始終有空字,但如果V中原來沒有空字,則 中不會有空字

2.2 上下文無關文法

「上下文無關文法 G 的定義 - 四元組」

  • 終結符(Terminal)集合,非空
  • 非終結符(Noterminal)集合,非空,且
  • 文法的開始符號,
    • S是特殊非終結符,表示所定義的語言最終感興趣的語法單位,如英語描述中的“句子”,程序語言描述的“程序”
  • 產生式集合(有限),每個產生式形式如下
    • 表示 “P定義為”
  • 開始符 至少必須在某個產生式的左部出現一次

2.3 推導

2.3.1 基本概念

  • :直接推出,只能對一個非終結符推導一次
  • :被定義為

「*推出 & +推出」

「概念辨析 - 句型 | 句子 | 語言」

「句型、句子推導練習」

  • 文法 => 句子

  • 句子 => 文法
    • 此類題目稍微難一些,需要用遞歸思想來解決,優先考慮最簡結構

2.3.2 語法樹

「最左/右推導」

「語法樹」

2.3.3 二義性

「二義性舉例」

「文法 / 語言二義性」

  • 文法二義性:文法存在某個句子對應兩顆不同語法樹
    • 文法二義性問題是不可判定問題,不存在一個算法,能在有限步驟中,確切地判定一個文法是否二義
    • 但仍然存在很多充分條件可以判定一個文法是非二義的
      • 例如一個文法如果屬于 LR 文法,則一定不是二義文法
  • 語言二義性:存在一個能推導出該語言的無二義文法

2.4 形式語言

2.4.1 概述

  • 喬姆斯基在1956年建立形式語言體系,將文法分為四種類型:0、1、2、3型
  • 四種類型唯一區別在于產生式

  • 0型(短語文法,圖靈機)

  • 1型(上下文有關文法,線性界限自動機)

  • 2型(上下文無關文法,非確定下推自動機)

  • 3型(正規文法,有限自動機)

    • 正規式、正規集

2.4.2 文法對比

  • 四種類型文法描述能力比較

  • 上下文無關文法 v.s. 正規文法

  • 上下文無關文法 v.s. 上下文有關文法

  • 上下文無關文法的局限 - 權衡思想

總結

以上是生活随笔為你收集整理的程序设计语言编译原理_编译原理学习笔记(二):高级程序设计语言的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。