⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test1.ml

📁 用ocaml编写的pascal编译程序
💻 ML
字号:
#load "sem.cmo";;
#load "instr.cmo";;
#load "lexes.cmo";;
#load "parser.cmo";;
#load "syntax.cmo";;



open Sem;;
open Instr;;

open Syntax;;

let compile source =let syn_tree = analyse source in sem_compute syn_tree ;;

#load "sem.cmo";;
#load "instr.cmo";;
#load "lexes.cmo";;
#load "parser.cmo";;
#load "syntax.cmo";;
#load "code.cmo";;
open Sem;;
open Instr;;

open Syntax;;
open Code;;

let compile source =
  let syn_tree  = analyse source       in
  let sem_tree  = sem_compute syn_tree in
  let inst_list = code sem_tree
  in  i_print inst_list;;

compile "
program exam;
  var z:integer;
  proc q(x:integer;var y:integer);
    begin
      if x<=0 then x:=1 
      else begin end;
      if x>1 then q(x-1,z)
      else begin
        z := 1;
        y := x*z
      end
    end;
  begin
    z := 0;
    q(10,z)
  end.
"
;;


compile "
program test0;
begin
end.
"
;;

compile "
program essai;
  var tab : array [0..10] of integer;
  proc p1(var p : array [x..y] of integer);
  begin
  end;
begin
 p1(tab)
end.
";;

compile "
program essai;
  var tab : array [0..10] of integer;
  proc p1(p : array [x..y] of integer);
  var z:integer;
  begin
    z:=x;
    z:=y
  end;
begin
 p1(tab)
end.
";;



compile "
program test1;
  var x,y : integer;
  proc q();
    proc r();
    begin 
      x := 0
    end;
  begin
    y := 0
  end;
begin
  x := y
end.
";;

compile "
program test1;
  var x: integer;
  var y:integer;
  proc q();
    proc r();
    begin 
      x := 0
    end;
  begin
    y := 0
  end;
begin
  x := y
end.
";;


compile "
program test2;
  var x,y,z:integer;
  proc swap(var x:integer; var y:integer);
    var z:integer;
  begin
    z := x;
    x := y;
    y := z
  end;
  proc aff(var x:integer; y:integer);
  begin
    x := y
  end;
  proc max(x:integer;y:integer;var z:integer);
  begin
    if   x < y 
    then z := y
    else z := x
  end;
begin
  swap(x,y);
  aff(z,1)
end.
";;

compile "
program toto;
  var     a:array [1..10] of integer;
  proc swap(var x:integer; var y:integer);
    var z:integer;
  begin
    z := x;
    x := y;
    y := z
  end;
  proc q(var x:integer;y:boolean);
  var z:array[x..100] of boolean;
  begin
    z[(x+100)/2] := not y
  end;
begin
  swap(a[1],a[3])
end.
";;

compile "
program toto;
  var z:integer;
  proc q(x:integer; var y:integer);
  begin
    if x<=0 then x := 1
    else begin end;
    if x>1 then
      q(x-1,z)
    else
      z := 1;
    y := x*z
  end;
begin
  z := 0;
  q(10,z)
end. 
";;

⌨️ 快捷键说明

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