这段内容包含了一个用C语言编写的PL0编译器源代码,详细展示了PL0语言编译器的工作原理和实现细节。适用于学习编译原理与实践。
编译原理PL0源码(C语言版)
PL0 编译器带有代码生成功能
// ---------------------------------------------------------------------------
#include
#pragma hdrstop
#include Unit1.h
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource *.dfm
TForm1 *Form1;
//---------------------------------------------------------------------------
const AL = 10; /* 标识符长度 */
const NORW = 14; /* 关键字数量 */
const TXMAX = 100; /* 标识符表长度 */
const NMAX = 14; /* 数字中最大数字位数 */
const AMAX =2047; /* 最大地址值 */
const LEVMAX= 3; /* 块嵌套的最大深度 */
const CXMAX = 200; /* 代码数组大小 */
typedef enum {
NUL, IDENT, NUMBER,
PLUS, MINUS, TIMES, SLASH,
ODDSYM, EQL, NEQ,
LSS, LEQ,
GTR, GEQ,
LPAREN, RPAREN,
COMMA, SEMICOLON,
PERIOD,
BECOMES,
BEGINSYM, ENDSYM,
IFSYM, THENSYM,
WHILESYM, WRITESYM, READSYM,
DOSYM, CALLSYM,
CONSTSYM, VARSYM,
PROCSYM, PROGSYM
} SYMBOL;