|
17 | 17 | (defparameter *comment-table-2* nil)
|
18 | 18 | (defparameter *lex-errors-msgs-1* nil)
|
19 | 19 | (defparameter *lex-errors-msgs-2* nil)
|
| 20 | +(defparameter *parser-error-msg-1* nil) |
| 21 | +(defparameter *parser-error-msg-2* nil) |
20 | 22 | (defparameter *lexems-1* nil)
|
21 | 23 | (defparameter *lexems-2* nil)
|
22 | 24 |
|
23 | 25 | (defun main ()
|
24 | 26 | (let ((cmd-args (uiop:command-line-arguments)))
|
25 |
| - (print cmd-args) |
26 | 27 | (differ-v01 (first cmd-args) (second cmd-args))))
|
27 | 28 |
|
28 |
| - |
29 | 29 | (defun differ-v01 (file1 file2)
|
30 | 30 | (init-stats)
|
31 | 31 | (let (*comment-table-1*
|
32 | 32 | *comment-table-2*
|
33 | 33 | *lex-errors-msgs-1*
|
34 | 34 | *lex-errors-msgs-2*
|
| 35 | + *parser-error-msg-1* |
| 36 | + *parser-error-msg-2* |
35 | 37 | *lexems-1*
|
36 | 38 | *lexems-2*)
|
37 | 39 | (multiple-value-bind (res1 res2)
|
|
44 | 46 | *comment-table-2*
|
45 | 47 | *lex-errors-msgs-1*
|
46 | 48 | *lex-errors-msgs-2*
|
| 49 | + *parser-error-msg-1* |
| 50 | + *parser-error-msg-2* |
47 | 51 | *lexems-1*
|
48 | 52 | *lexems-2*)
|
49 | 53 | (multiple-value-bind (res1 res2)
|
|
59 | 63 | (with-open-file (stream "comments2.json" :direction :output
|
60 | 64 | :if-exists :supersede)
|
61 | 65 | (get-json-comments *comment-table-2* stream)))
|
62 |
| - (when *lex-errors-msgs-1* |
| 66 | + (when *lexems-1* |
63 | 67 | (with-open-file (stream "lexems1.json" :direction :output
|
64 |
| - :if-exists :supersede) |
| 68 | + :if-exists :supersede) |
65 | 69 | (get-lexems-json *lexems-1* stream))
|
66 |
| - (with-open-file (stream "lexer-errors-msgs1.json" :direction :output |
67 |
| - :if-exists :supersede) |
68 |
| - (get-lexer-errors-msgs-json *lex-errors-msgs-1* stream))) |
69 |
| - (when *lex-errors-msgs-2* |
| 70 | + (when *lex-errors-msgs-1* |
| 71 | + (with-open-file (stream "lexer-errors-msgs1.json" :direction :output |
| 72 | + :if-exists :supersede) |
| 73 | + (get-lexer-errors-msgs-json *lex-errors-msgs-1* stream))) |
| 74 | + (when *parser-error-msg-1* |
| 75 | + (with-open-file (stream "parser-error-msg1.json" :direction :output |
| 76 | + :if-exists :supersede) |
| 77 | + (get-parser-error-msg-json *parser-error-msg-1* stream))) ) |
| 78 | + (when *lexems-2* |
70 | 79 | (with-open-file (stream "lexems2.json" :direction :output
|
71 |
| - :if-exists :supersede) |
| 80 | + :if-exists :supersede) |
72 | 81 | (get-lexems-json *lexems-2* stream))
|
73 |
| - (with-open-file (stream "lexer-errors-msgs2.json" :direction :output |
74 |
| - :if-exists :supersede) |
75 |
| - (get-lexer-errors-msgs-json *lex-errors-msgs-2* stream))) |
| 82 | + (when *lex-errors-msgs-2* |
| 83 | + (with-open-file (stream "lexer-errors-msgs2.json" :direction :output |
| 84 | + :if-exists :supersede) |
| 85 | + (get-lexer-errors-msgs-json *lex-errors-msgs-2* stream))) |
| 86 | + (when *parser-error-msg-2* |
| 87 | + (with-open-file (stream "parser-error-msg2.json" :direction :output |
| 88 | + :if-exists :supersede) |
| 89 | + (get-parser-error-msg-json *parser-error-msg-2* stream)))) |
76 | 90 | (when (and res1 res2)
|
77 | 91 | (with-open-file (stream "res1.json" :direction :output
|
78 | 92 | :if-exists :supersede)
|
|
90 | 104 | *comment-table-2*
|
91 | 105 | *lex-errors-msgs-1*
|
92 | 106 | *lex-errors-msgs-2*
|
| 107 | + *parser-error-msg-1* |
| 108 | + *parser-error-msg-2* |
93 | 109 | *lexems-1*
|
94 | 110 | *lexems-2*)
|
95 | 111 | (multiple-value-bind (res1 res2)
|
|
109 | 125 | (get-lexer-errors-msgs-json *lex-errors-msgs-2* t)
|
110 | 126 | (format t "~%Lexems-1:~%")
|
111 | 127 | (get-lexems-json *lexems-2* t))
|
| 128 | + (when *parser-error-msg-1* |
| 129 | + (format t "~%Parser-error-msg-1:~%") |
| 130 | + (get-parser-error-msg-json *parser-error-msg-1* t) |
| 131 | + (format t "~%Lexems-1:~%") |
| 132 | + (get-lexems-json *lexems-1* t)) |
| 133 | + (when *parser-error-msg-2* |
| 134 | + (format t "~%Parser-error-msg-2:~%") |
| 135 | + (get-parser-error-msg-json *parser-error-msg-2* t) |
| 136 | + (format t "~%Lexems-2:~%") |
| 137 | + (get-lexems-json *lexems-2* t)) |
112 | 138 | (when (and res1 res2)
|
113 | 139 | (format t "~%Res1:~%")
|
114 | 140 | (get-json-res res1 out1)
|
|
146 | 172 | (setf *lex-errors-msgs-2* lex-errors)
|
147 | 173 | (setf *lexems-2* res-lexems))
|
148 | 174 | (t (error "Error value of cur-file")))
|
149 |
| - (return-from get-abstract-sem-tree-from-string nil)) |
150 |
| - (abstract-sem-tree-gen (parser res-lexems) :curr-file cur-file))) |
| 175 | + (return-from get-abstract-sem-tree-from-string nil)) |
| 176 | + (multiple-value-bind (res-syn-tree parser-error) |
| 177 | + (parser res-lexems) |
| 178 | + (when parser-error |
| 179 | + (cond ((= cur-file 1) |
| 180 | + (setf *parser-error-msg-1* parser-error) |
| 181 | + (setf *lexems-1* res-lexems)) |
| 182 | + ((= cur-file 2) |
| 183 | + (setf *parser-error-msg-2* parser-error) |
| 184 | + (setf *lexems-2* res-lexems)) |
| 185 | + (t (error "Error value of cur-file"))) |
| 186 | + (return-from get-abstract-sem-tree-from-string nil)) |
| 187 | + (abstract-sem-tree-gen res-syn-tree :curr-file cur-file)))) |
0 commit comments