19.06.2014 Views

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!