minipascal.pl

来自「一个编译器的源程序」· PL 代码 · 共 43 行

PL
43
字号
:- pce_autoload(finder, library(find_file)).
:- pce_global(@finder, new(finder)).
:- consult([scanner, parser, interpre, compiler]).

minipascal:-
  new(F, frame('Mini-Pascal')),
  send(F, append, new(D, dialog('Quelldatei'))),

  send(D, append, new(V, view)),

  send(D, append, button('Laden', message(@prolog, lade, V))),
  send(D, append, button('Ausf黨ren', message(@prolog, ausfuehren, V))),
  send(D, append, button('Beenden', message(D, destroy))),
  send(F, open).

lade(V):-
  get(@finder, file, @on, '.pas', PascalDatei),
  send(V, print, 'Quelltext: '),
  send(V, load, PascalDatei),
  retractall(datei(_)),
  assert(datei(PascalDatei)).


ausfuehren(V):-  
  datei(PascalDatei),
  send(V, append, ''),
  send(V, newline),
  parse_programm(PascalDatei, Parsebaum),
  zeichne_term(Parsebaum),
  interpret_programm(PascalDatei),
  compile_programm(PascalDatei).
  
schreib_liste(V, [Element]):-
  send(V, print, Element).
schreib_liste(V, [Kopf|Rest]):-
  send(V, print, Kopf),
  send(V, print, ', '),
  schreib_liste(V, Rest).

% send(@prolog, write, hello).


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?