
编译原理
starsky2006
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
PL/0语言编译程序整理实现:(4)、对象类型
<br />unit uObjectType;<br /> <br />interface<br /> <br />uses uSymbolType;<br /> <br />const<br /> CNT_ObjectTable_MaxCount = 100; //--标识符表的最大长度(容量)<br /> <br />type<br /> //--标识符类型(常量、变量、数组,过程)<br /> TObjectKind = (okConstant,okVariable,okArray,原创 2010-12-15 09:13:00 · 435 阅读 · 0 评论 -
PL/0语言编译程序整理实现:(3)、词法分析
<br />unit uSymbol;<br />interface<br />uses<br /> SysUtils,uSymbolType,uError;<br />type<br /> TSymbolAnalyzer = class<br /> private<br /> FScript: string;<br /> FChar: char;<br /> FCharPos: integer;<br /> FSymbol: TSy原创 2010-12-13 17:45:00 · 799 阅读 · 0 评论 -
PL/0语言编译程序整理实现:(2)、单词类型
<br />unit uSymbolType;<br />interface<br />uses<br /> Classes;<br />const<br /> CNT_Ident_MaxLen = 10; //---标识符最长长度<br /> CNT_Number_MaxLen = 14; //---数字允许的最长位数<br />type<br /> //---标识符<br /> TIdent = packed array[1..CNT_Ident_MaxLen] of ch原创 2010-12-13 17:44:00 · 831 阅读 · 0 评论 -
PL/0语言编译程序整理实现:(1)、语法描述EBNF
参考《编译原理(清华版)》中"PL/0语言编译程序"的源代码,重新整理和实现,以提高代码可阅读性和可理解性。原创 2010-12-13 17:42:00 · 2099 阅读 · 0 评论 -
PL/0语言编译程序整理实现:(12)、测试代码
<br />const<br /> a = 10;<br />var<br /> b,c;<br /> procedure p;<br /> begin<br /> c := b + a<br /> end;<br />begin<br /> read(b);<br /> while b # 0 do<br /> begin<br /> call p;<br /> write(2 * c);<br />原创 2010-12-15 09:30:00 · 3132 阅读 · 0 评论 -
PL/0语言编译程序整理实现:(11)、测试界面
界面<br /><br /><br />object Form1: TForm1<br /> Left = 192<br /> Top = 114<br /> Width = 691<br /> Height = 451<br /> Caption = 'Form1'<br /> Color = clBtnFace<br /> Font.Charset = DEFAULT_CHARSET<br /> Font.Color = clWindowText<br /> Font.Height =原创 2010-12-15 09:28:00 · 508 阅读 · 0 评论 -
PL/0语言编译程序整理实现:(10)、错误处理
<br />unit uError;<br /> <br />interface<br /> <br />uses<br /> SysUtils;<br /> <br />type<br /> TError = class<br /> public<br /> procedure ReportError(const AMsg: string); <br /> end;<br /> <br />implementation<br /> <br />proced原创 2010-12-15 09:25:00 · 929 阅读 · 0 评论 -
PL/0语言编译程序整理实现:(9)、错误信息
<br />unit uErrorInfo;<br /> <br />interface<br /> <br />const<br /> CNT_Error1 = '程序编译失败';<br /> CNT_Error2 = '数值溢出';<br /> CNT_Error3 = '无效字符';<br /> CNT_Error4 = '代码太长';<br /> CNT_Error_1 = 'Error 01: 常数说明中“=”写成“:=”';<br /> CNT_Error_原创 2010-12-15 09:24:00 · 917 阅读 · 0 评论 -
PL/0语言编译程序整理实现:(8)、代码执行
<br />unit uInterpret;<br /> <br />interface<br /> <br />uses<br /> SysUtils,classes,Dialogs,uCodeType;<br /> <br />type<br /> TInterpret = class<br /> private<br /> FCode: PInstructions; //--代码段<br /> FOutList: TStrings;<br /> pu原创 2010-12-15 09:22:00 · 790 阅读 · 0 评论 -
PL/0语言编译程序整理实现:(7)、目标代码
<br />unit uCode;<br /> <br />interface<br /> <br />uses<br /> SysUtils,Classes,uSymbolType,uCodeType,uError;<br /> <br />type<br /> TCodes = class<br /> private<br /> FError: TError;<br /> FCode: PInstructions; //--代码表<br />原创 2010-12-15 09:21:00 · 1762 阅读 · 0 评论 -
PL/0语言编译程序整理实现:(5)、语法分析
<br />unit uGrammar;<br /> <br />interface<br /> <br />uses<br /> SysUtils,Classes,TypInfo,uSymbolType,uSymbol,uObjectType,uCodeType,uCode,uError;<br /> <br />type<br /> TGrammarAnalyzer = class<br /> private<br /> FScript: TSymbolAnalyzer;原创 2010-12-15 09:15:00 · 1254 阅读 · 0 评论 -
PL/0语言编译程序整理实现:(6)、代码类型
<br />unit uCodeType;<br /> <br />interface<br /> <br />const<br /> CNT_LevelMax = 3; //--最大允许的块嵌套层数)<br /> CNT_AddressMax = 2047; //--最大寻址空间<br /> CNT_Code_MaxLen = 200; //--PCODE目标代码表的最大长度(可容纳代码行数)<br /> <br />type<br /> //--PCODE指令类型<br />原创 2010-12-15 09:20:00 · 685 阅读 · 0 评论