|
Давайте создадим компилятор!} procedure Block; begin Scan; while not(Token in ['e', 'l']) do begin case Token of 'i': DoIf; 'w': DoWhile; 'R': DoRead; 'W': DoWrite; else Assignment; end; Scan; end; end; {} { Allocate Storage for a Variable } procedure Alloc(N: Symbol); begin if InTable(N) then Abort('Duplicate Variable Name ' + N); AddEntry(N, 'v'); Write(N, ':', TAB, 'DC '); if Look = '=' then begin Match('='); If Look = '-' then begin Write(Look); Match('-'); end; WriteLn(GetNum); end else WriteLn('0'); end; {} { Parse and Translate a Data Declaration } procedure Decl; begin GetName; Alloc(Value); while Look = ',' do begin Match(','); GetName; Alloc(Value); end; end; {} { Parse and Translate Global Declarations } procedure TopDecls; begin Scan; while Token <> 'b' do begin case Token of 'v': Decl; else Abort('Unrecognized Keyword ' + Value); end; Scan; end; end; {} { Parse and Translate a Main Program } procedure Main; begin MatchString('BEGIN'); Prolog; Block; MatchString('END'); Epilog; end; {} {PParse and Translate a Program } procedure ...» | Код для вставки книги в блог HTML
phpBB
текст
|
|