Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
#######
#
# E-scripts on Pascal.
#
# Note 1: use the eev command (defined in eev.el) and the
# ee alias (in my .zshrc) to execute parts of this file.
# Executing this file as a whole makes no sense.
#
# Note 2: be VERY careful and make sure you understand what
# you're doing.
#
# Note 3: If you use a shell other than zsh things like |&
# and the for loops may not work.
#
# Note 4: I always run as root.
#
# Note 5: some parts are too old and don't work anymore. Some
# never worked.
#
# Note 6: the definitions for the find-xxxfile commands are on my
# .emacs.
#
# Note 7: if you see a strange command check my .zshrc -- it may
# be defined there as a function or an alias.
#
# Note 8: the sections without dates are always older than the
# sections with dates.
#
# This file is at <http://angg.twu.net/e/pascal.e>
#           or at <http://angg.twu.net/e/pascal.e.html>.
#        See also <http://angg.twu.net/emacs.html>,
#                 <http://angg.twu.net/.emacs[.html]>,
#                 <http://angg.twu.net/.zshrc[.html]>,
#                 <http://angg.twu.net/escripts.html>,
#             and <http://angg.twu.net/>.
#
#######





# (find-fline "/usr/share/doc/gcc-4.1-base/pascal/examples/")
# (find-fline "/usr/share/doc/gcc-4.1-base/pascal/docdemos/")

# (find-status   "gpc-4.1-doc")
# (find-vldifile "gpc-4.1-doc.list")
# (find-udfile   "gpc-4.1-doc/")
# (find-status   "gpc-4.1")
# (find-vldifile "gpc-4.1.list")
# (find-udfile   "gpc-4.1/")
# (find-status   "gpc-doc")
# (find-vldifile "gpc-doc.list")
# (find-udfile   "gpc-doc/")
# (find-status   "gpc")
# (find-vldifile "gpc.list")
# (find-udfile   "gpc/")

# (find-node "(gpc-4.1)")
# (find-node "(gpcs-4.1)")

# (find-node "(gpc)Pointer Arithmetics")
# (find-node "(gpc)Data Types")
# (find-node "(gpc)Procedural Types")
# (find-node "(gpc)Run Time System")
# (find-node "(gpc)GPC Units")

# (find-node "(gpc)Programming")
# (find-node "(gpc)The Function")
# (find-node "(gpc)The Procedure")
# (find-node "(gpc)WriteLn")

     function FUNCTION_IDENTIFIER (PARAMETER_LIST): RESULT_TYPE;
     DECLARATION_PART
     begin
       STATEMENT_PART
     end;


#*
cat > /tmp/foo.pas <<'%%%'
program teste;
function m(a: integer; b: integer): integer;
  begin WriteLn("  ", a, "*", b, " -> ", a*b); return(a*b); end;
function s(a: integer; b: integer): integer;
  begin WriteLn("  ", a, "+", b, " -> ", a+b); return(a+b); end;
function P1(a: integer): boolean;
  begin WriteLn("  ", a, "*", a, " < 10 -> ", a*a<10); return(a*a<10); end;
function P2(a: integer): boolean;
  begin WriteLn("  ", a, "=4 -> ", a=4); return a=4; end;
function P3(a: integer): boolean;
  begin WriteLn("  ", a, ">=9 -> ", a>=9); return a>=9; end;
procedure testaordem;
  begin WriteLn("2*3 + 4*5:");
        WriteLn(" -> ", s(m(2, 3), m(4, 5)));
        WriteLn;
  end;
procedure f123(function f(a: integer; b: integer): integer);
  begin WriteLn("f(f(1,2), f(3,4)):");
        WriteLn(" -> ", f(f(1, 2), f(3, 4)));
        WriteLn;
  end;
procedure existe_a_em_A_tal_que(function P(a: integer): boolean);
  begin WriteLn("Existe a em {1, 2, 4} tal que P:");
        WriteLn("-> P(1) or P(2) or P(4)");
        WriteLn(" -> ", P(1) or P(2) or P(4));
        WriteLn;
  end;

begin
  testaordem;
  f123(s);
  f123(m);
  existe_a_em_A_tal_que(P1);
  existe_a_em_A_tal_que(P2);
  existe_a_em_A_tal_que(P3);
end.

(* Output:

2*3 + 4*5:
 ->   4*5 -> 20
  2*3 -> 6
  6+20 -> 26
26

f(f(1,2), f(3,4)):
 ->   3+4 -> 7
  1+2 -> 3
  3+7 -> 10
10

f(f(1,2), f(3,4)):
 ->   3*4 -> 12
  1*2 -> 2
  2*12 -> 24
24

Existe a em {1, 2, 4} tal que P:
-> P(1) or P(2) or P(4)
  1*1 < 10 -> True
 -> True

Existe a em {1, 2, 4} tal que P:
-> P(1) or P(2) or P(4)
  1=4 -> False
  2=4 -> False
  4=4 -> True
 -> True

Existe a em {1, 2, 4} tal que P:
-> P(1) or P(2) or P(4)
  1>=9 -> False
  2>=9 -> False
  4>=9 -> False
 -> False

*)
%%%

cd /tmp/
gpc foo.pas && a.out

#*

# (find-sh "cd /tmp/ && gpc foo.pas && a.out")


int P1(int a) { printf("  %d*%d < 10 -> %d\n", a, a, a*a<10); return a*a<10; }
int P2(int a) { printf("  %d==4 -> %d\n", a, a==4); return a==4; }
int P3(int a) { printf("  %d>=9 -> %d\n", a, a>=9); return a>=9; }







%d*%d -> %d\n"


#include <stdio.h>
int m(int a, int b) { printf("  %d*%d -> %d\n", a, b, a*b); return a*b; }
int s(int a, int b) { printf("  %d+%d -> %d\n", a, b, a+b); return a+b; }
int P1(int a) { printf("  %d*%d < 10 -> %d\n", a, a, a*a<10); return a*a<10; }
int P2(int a) { printf("  %d==4 -> %d\n", a, a==4); return a==4; }
int P3(int a) { printf("  %d>=9 -> %d\n", a, a>=9); return a>=9; }
void testaordem(void) {
  printf("2*3 + 4*5: \n");
  printf(" -> %d\n\n", s(m(2, 3), m(4, 5)));
}
void f123(int(*f)()) {
  printf("f(f(1,2), f(3,4)):\n");
  printf(" -> %d\n\n", f(f(1, 2), f(3, 4))); 
}
void existe_a_em_A_tal_que(int(*P)()) {
  printf("Existe a em {1, 2, 4} tal que P:\n");
  printf("-> P(1) || P(2) || P(4)\n");
  printf(" -> %d\n\n", P(1) || P(2) || P(4)); 
}

main() {
  testaordem();
  f123(s);
  f123(m);
  existe_a_em_A_tal_que(P1);
  existe_a_em_A_tal_que(P2);
  existe_a_em_A_tal_que(P3);
}





#####
#
# factorial
# 2011apr20
#
#####

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cat > /tmp/foo.pas <<'%%%'
program teste;
function fact(n: integer): integer;
  if n <= 0 then return 1;
  return n * fact(n - 1);
end;
begin
  WriteLn(fact(4));
end.
(* ...
*)
%%%
cd /tmp/
gpc foo.pas && a.out




See: lua-l, 2012nov06 (Luciano de Souza / Romulo AB)






#  Local Variables:
#  coding:               raw-text-unix
#  ee-delimiter-hash:    "\n#*\n"
#  ee-delimiter-percent: "\n%*\n"
#  ee-anchor-format:     "«%s»"
#  End: