編譯語義分析實驗

2021-06-22 10:16:20 字數 765 閱讀 1596



單詞的種別編碼方案

單詞符號

種別編碼

單詞符號

種別編碼

單詞符號

種別編碼

begin 1

+ 13

>  23

if 2

- 14

>= 24

then 3

* 15

= 25

while 4

/ 16

; 26

do 5

:=

17 29

l(l|d)* 10

# 0dd* 11

<>  21

演算法思想

1、設定語義過程。  (1

)emit

(char *result,char *ag1,char *op,char *ag2) 

該函式的功能是生成乙個三位址語句送到四元式表中。 四元式表的結構如下: 

struct 

quad[20];  

(2) char *newtemp() 

該函式回送乙個新的臨時變數名,臨時變數名產生的順序為t1,t2

,… 

char *newtemp(void)   2、

函式lrparser 

在原來語法分析的基礎上插入相應的語義動作:將輸入串翻譯成四元式序列。在實驗中我們只對表示式、賦值語句進行翻譯。

測試結果

語法正確。

begin錯誤。

表示式錯誤。

編譯原理語義分析 編譯原理 語義分析和符號表

本文使用 zhihu on vscode 創作並發布經過詞法分析 語法分析之後,源程式形式上和結構上的正確性基本得到了保證。然而,僅有形式上的正確性,並不能保證源程式就是完全正確的,還要檢查源程式的含義是否正確。諸如符號的使用是否得當,表示式的型別是否相容等,完成這些功能的編譯階段稱為語義分析。語義...

編譯原理之語義分析

見語法制導翻譯篇 語義是指源程式及其組成部分所表述的含義 和語法不同,語法是關於程式及其組成部分的構成規則的描述,是上下文無關的 而語義是關於語法結構的含義及其使用規則的描述,是上下文有關的。語法上正確,其語義不一定正確。語義分析與中間 生成器基於語義規則,對語法樹進行語義分析 變數是否定義,型別是...

編譯器之語義分析

semantic 語言的意義 編譯器的語義分析階段將變數與其用法關聯起來,檢查每個表示式是否有正確的型別,還有,將抽象的語法翻譯成更簡單的形式以 方便生成機器語言 碼 符號表將識別符號和其型別 位置關聯起來,當我們去處理變數,函式的宣告時,就是將這些資訊組織 繫結 起來,放在表裡,當需 要知道這些函...