標題: 一個符號表元件庫的設計與製作
The Design and Implementation of a Reusable Symbol Table Library
作者: 林金輝
Jin-Hue Lin
王豐堅
Feng-Jian Wang
資訊科學與工程研究所
關鍵字: 編譯器;符號處理;符號表;物件導向;compiler;name analysis;symbol table;object-oriented
公開日期: 1993
摘要: 符號處理 (name analysis╱symbol processing) 的主要任務在於分析程 式中參用與宣告之間的關係。過去曾有研究,嘗試設計可重複使用的符號 處理模組,或是發展相關的產生式技術,然而皆存在功能不足或效率不佳 的缺點。在此篇論文中,我們設計了一組可用於不同語言編譯器的符號表 。此符號表庫以一較抽象的語意模型為基礎,直接提供過載 (overloading) 的功能,界面允許實作與最佳化的多樣性,元件的設計遵 循物件導向(object-oriented) 的法則,最後並以 C++ 完成實作。其中 ,隨編譯器或語言而異的部份被抽取出來成為模板(template)參數,因此 能提供較佳的再利用性與擴充性。另外,我們並以範例來展示,此符號表 庫能方便地支援一些重要語言特性的分析與處理,這些語言包括 C、C++ 、Ada、Pascal、Modula-2 等。 Name analysis is the task of finding the relation between references and declarations in a program. Some previous work had tried to design reusable name analysis modules or develop the generation techniques for name analysis modules. However, these modules are either insufficient for new language features or not so compact and efficient as hand-coded symbol tables. In this thesis, we designed a library of symbol tables that can be reused for compilers of different languages. The design is based on a more abstract model for scope rules. Overloading is supported directly. The interface allows implementation and optimization variants. The entire work followed object-oriented paradigm and was implemented in C++. Compiler- or language- dependent factors were extracted as template parameters. Thus, the library can have better reusability and extendibility. Finally, we present some examples to show that our symbol tables facilitate the handling of some important features found in some popular languages, including C, C++, Ada, Pascal, and Modula-2.
URI: http://140.113.39.130/cdrfb3/record/nctu/#NT820392018
http://hdl.handle.net/11536/57821
Appears in Collections:Thesis