File: test.mini

package info (click to toggle)
gforth 0.7.3%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 5,888 kB
  • ctags: 1,977
  • sloc: ansic: 8,535; sh: 3,666; lisp: 1,778; makefile: 1,011; yacc: 186; sed: 141; lex: 102; awk: 21
file content (93 lines) | stat: -rw-r--r-- 1,238 bytes parent folder | download | duplicates (16)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
func operators()
  print 3 = 3;
  print (3+5) = 8;
  print (5-3) = 2;
  print (3*5) = 15;
  print (3&5) = 1;
  print (3|5) = 7;
  print (3<5) = 1;
  print (5<3) = 0;
  print (3=5) = 0;
  print (5=5) = 1;
  print (!3) = 0;
  print (!0) = 1;
  print (-3) = (0-3);
  return 0;
end func;

func params(a, b, c)
  print a = 3;
  print b = 5;
  print c = 7;
  return 9;
end func;

func locals(a)
  var b;
  var c;
  b:=a+1;
  c:=b+1;
  a:=c+1;
  return a;
end func;

func inc(x)
  return x+1;
end func;

func sign(n)
  var r;
  if (n<0) then
    r:=-1;
  else
    if (0<n) then
      r:=1;
    else
      r:=0;
    end if;
  end if;
  return r;
end func;

func recfac(n)
  var r;
  if (n<1) then
    r:=1;
  else
    r:=recfac(n-1)*n;
  end if;
  return r;
end func;

func itfac(n)
  var r;
  r:=1;
  while (0<n) do
    r:=r*n;
    n:=n-1;
  end while;
  return r;
end func;

func testfac()
  var i;
  i:=0;
  while (i<10) do
    print itfac(i) = recfac(i);
    i:=i+1;
  end while;
  return 0;
end func;

func main()
  operators();
  print params(3,5,7) = 9;
  print locals(3) = 6;
  print (inc(1)+inc(inc(inc(3))))=8;
  print sign(5) = 1;
  print sign(0) = 0;
  print sign(-5) = (-1);
  print itfac(5) = 120;
  testfac();
  return 0;
end func;