program interpreter; function IsWhiteSpace(C: Char): Boolean; begin Result := (C = ' ') or (C = #13) or (C = #10) or (C = #9); end; procedure ShowError(Text: string); begin WriteLn(Text); Halt; end; function ReadChar: Char; begin if Eof then ShowError('Premature end of source'); Read(Result); end; function ReadNext: string; var C: Char; begin Result := ''; C := ReadChar; while IsWhiteSpace(C) do C := ReadChar; while not IsWhiteSpace(C) do begin Result := Result + C; C := ReadChar; end; end; procedure Expect(Text: string); var Next: string; begin Next := ReadNext; if Next <> Text then ShowError('Expected ' + Text + ' but found ' + Next); end; begin WriteLn('Start'); Expect('begin'); Expect('end.'); WriteLn('Finished'); end. { |begin |end. }