Rim Chaabane. Analyse dynamique de ... - Université Paris 8
Rim Chaabane. Analyse dynamique de ... - Université Paris 8
Rim Chaabane. Analyse dynamique de ... - Université Paris 8
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Analyse</strong> <strong>dynamique</strong> <strong>de</strong> programmes C<br />
FICHIER MAIN DE LLISP<br />
--------------------------------------------<br />
1 /*<br />
2 * main.c<br />
3 */<br />
4<br />
5 #inclu<strong>de</strong> "llisp/main.h"<br />
6 #inclu<strong>de</strong> "llisp/mem.c"<br />
7 #inclu<strong>de</strong> "llisp/print.c"<br />
8 #inclu<strong>de</strong> "llisp/std.c"<br />
9 #inclu<strong>de</strong> "llisp/read.c"<br />
10 #inclu<strong>de</strong> "llisp/eval.c"<br />
11<br />
12 extern int sp;<br />
13 extern jmp_buf jmp_top;<br />
14 extern jmp_buf jmp_file;<br />
15 extern FILE *Stdin;<br />
16 extern FILE *File;<br />
17 extern void unbind();<br />
18 extern void lisp_print();<br />
19 extern void lisp_read();<br />
20 extern void eval();<br />
21 extern int int_read(char ch);<br />
22 extern void obj_print(int obj);<br />
23 extern void init_listes();<br />
24<br />
25 void toplevel()<br />
26 {<br />
27 for ( ;; )<br />
28 {<br />
29 printf ("? ");<br />
30 fflush (stdout);<br />
31 lisp_read();<br />
32 eval();<br />
33 printf ("= ");<br />
34 lisp_print();<br />
35 putchar ('\n');<br />
36 fflush (stdout);<br />
37 }<br />
38 }<br />
39<br />
40 /* routine d'erreur : obj est un entier, adresse (in<strong>de</strong>x dans mem) d'un elt */<br />
41 void err(char *fmt,int obj)<br />
42 {<br />
43 int i;<br />
44 printf (fmt, obj);<br />
45 while (sp > B_STACK)<br />
46 if (pop(i) == -2)<br />
47 unbind();<br />
48 longjmp (jmp_top, 0);<br />
49 }<br />
50<br />
51 void err2(char *fmt)<br />
52 {<br />
53 int i;<br />
54 printf (fmt);<br />
55 while (sp > B_STACK)<br />
56 if (pop(i) == -2)<br />
57 unbind();<br />
58 longjmp (jmp_top, 0);<br />
59 }<br />
60<br />
61 /* routine d'erreur : obj est une chaine (p_name) d'un elt */<br />
62 void err_s(char *fmt,char *obj)<br />
63 {<br />
64 int i;<br />
65 printf (fmt, obj);<br />
66 while (sp > B_STACK)<br />
90