iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 11
0
Software Development

做一個JVM語言系列 第 11

Antlr練習,程式符號的有效性檢查(二)

分析程式中變數,函數的有效性,
有一些方法論。
學院派的教授又融合大量的實作經驗,
可以把理論實踐出來。

首先是2S,Symbol, Scope.

以這個小語言cymbol 為例,Symbol 可分類成:tINVALID, tVOID, tINT, tFLOAT,
4類,依次表示為 無效,無回傳值,整數,浮點數。

解析一段程式,可以產生 Symbol Tables。
分類各種類型的符號。
如以下的例子:

int x; //(1) 
int y;
void a() //(2) 
{ //(3) 
    int x;
    x = 1;  // 這個x 的範圍存在於函數內, 不是  全域的x
    y = 2;  // y 不存在於目前的作用域, 而全域的y有定義
    { int y = x; } //(4) 又是一個更小的作用域
}
void b(int z) //(5) 函數宣告
{ } //(6) 函數實作

通常在解決作用域的問題時,
會引進兩階段,
以術語來說,一階段是Defining Symbols。
定義符號。
另一階段是and Resolving Symbols。
定位符號。

而對Antlr來說,它就是兩次的啟動監聽Listner模式。


上一篇
Antlr練習,程式符號的有效性檢查
下一篇
JVM .CLASS 檔的格式,JVM 語言的熱身。
系列文
做一個JVM語言12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言