1 #@ MODIF tables Parsers DATE 15/02/2001 AUTEUR YESSAYAN A.YESSAYAN
3 Ce fichier définit une table de tags à utiliser avec le package
4 mxTextTools pour décoder un fichier au format Asterv5.
6 XXX Ce fichier doit etre corrigé pour incorporer deux modifications
7 réalisées dans la version V1_1p1 d'EFICAS
9 from TextTools import *
12 __version__="$Name: $"
13 __Id__="$Id: tables.tag,v 1.11.18.1 2001/06/15 17:20:24 iliade Exp $"
16 err0='ERR0 , erreur non identifiee : '
17 err1='ERR1 , arguments commande errones : '
18 err2='ERR2 , parenthese obligatoire : '
19 err3='ERR3 , point virgule obligatoire : '
20 err4='ERR4 , ":" obligatoire avant mot cle : '
21 err5='ERR5 , mot cle facteur ou arg obligatoire : '
22 err6='ERR6 , identificateur obligatoire : '
23 err7='ERR7 , mot cle facteur errone : '
24 err8='ERR8 , signe = ou ( attendu : '
25 err9='ERR9 , ( attendue : '
26 err10='ERR10 , vexpr attendue : '
28 ERRORS=(err0,err1,err2,err3,err4,err5,err6,err7,err8,err9,
31 white_set=set(whitespace)
33 delim=" ();:=,!&*/%\n"
45 AllIn ' \t\n\r' F:next
53 'comments' = Table is:
54 IsInSet white_set F:next T:<blancs>
57 AllNotIn '\n\r' F:next
60 AllInSet white_set F:next
61 Is '%' F:MatchOk T:<comment>
63 t_commespaces = Table is:
64 IsInSet white_set F:next T:<blancs>
67 AllNotIn '\n\r' F:next
70 AllInSet white_set F:next
71 Is '%' F:MatchOk T:<comment>
74 'comments' = Table is:
77 AllNotIn '\n\r' F:next
78 AllIn '\n\r' F:next T:<debut>
79 AllInSet white_set F:next T:<debut>
84 AllIn alpha+'_'+number F:MatchOk
86 t_identificateur = Table is:
88 AllIn alpha+'_'+number F:MatchOk
92 AllIn alpha+'_'+number F:next
93 None = Table t_commespaces F:next
99 AllIn alpha+'_'+number F:MatchOk
106 Word "''" F:next T:<loop>
107 Is "'" F:MatchFail T:MatchOk
113 IsIn number F:MatchFail T:<decimal>
115 IsIn number F:MatchFail
120 <exposant> # si pas exposant termine number trouve
121 IsIn 'deDE' F:MatchOk
123 AllIn number F:MatchFail T:MatchOk
129 IsIn number F:MatchFail T:<decimal>
131 IsIn number F:MatchFail
136 <exposant> # si pas exposant termine number trouve
137 IsIn 'deDE' F:MatchOk
139 AllIn number F:MatchFail T:MatchOk
143 "RI" = Word 'RI' F:<mp>
145 t_number F:MatchFail # ce n est pas un complexe
146 commespaces F:next # a partir d ici c est un complexe => produire erreurs
149 t_number F:MatchFail T:MatchOk
151 "MP" = Word 'MP' F:MatchFail
153 t_number F:MatchFail # ce n est pas un complexe
154 commespaces F:next # a partir d ici c est un complexe => produire erreurs
157 t_number F:MatchFail T:MatchOk
159 err7 = Table t_err F:MatchFail T:MatchOk
164 'vexpr' = Table ThisTable F:<err10>
166 'par2' = Is ')' F:<err9> T:<op>
167 t_number F:next T:<op>
168 t_complexe F:next T:<op>
171 'vexpr' = Table ThisTable F:<err10> T:<op>
172 "PI" = Word 'PI' F:next T:<op>
175 'listpar' = Is '(': # on peut avoir une liste de parametres
178 'param' = Table ThisTable F:<err10>
180 Is ',' F:next T:<params>
181 'finlist' = Is ')' F:<err9>
186 'vexpr' = Table ThisTable F:<err10> T:MatchOk
189 'vexpr' = Table ThisTable F:<err10> T:MatchOk
192 err0 = Table t_err F:MatchFail T:MatchOk
194 err10 = Table t_err F:MatchFail T:MatchOk
196 err9 = Table t_err F:MatchFail T:MatchOk
209 t_vexpr F:<err> T:<suite>
212 Is ')' F:<err> T:MatchOk
214 err7 = Table t_err F:MatchFail T:MatchOk
222 'vexpr' = Table t_vexpr F:<err>
224 Is ')' F:<err> T:MatchOk
226 err7 = Table t_err F:MatchFail T:MatchOk
236 'comment' = Table is:
238 AllNotIn '\n\r' F:next
239 AllIn '\n\r' F:MatchOk
242 'Null' = AllIn ' ;\t\n\r'
245 'passline' = Table is:
246 AllNotIn newline F:next
258 Is '\n' F:MatchOk T:MatchOk
261 'formule' = Table is:
267 'type' = Table t_identificateur F:<err>
273 'id' = Table t_identificateur F:<err>
278 'typ' = Table t_identmc F:next
280 'id' = Table t_identificateur F:<err>
282 Is ',' F:next T:<params>
288 'vexpr' = Table t_vexpr F:<err>
296 Is '\n' F:MatchOk T:MatchOk
298 err0 = Table t_err F:MatchFail T:MatchOk
300 err9 = Table t_err F:MatchFail T:MatchOk
303 'nom_ope' = Table is:
304 Word 'EVAL' F:next T:MatchFail # EVAL n est pas un nom d operateur, il est reserve
306 AllIn alpha+'_'+number F:next
313 n_string F:next T:MatchOk
321 t_complexe F:next T:<suite>
322 t_number F:next T:<suite>
323 t_eval_expr F:next T:<suite>
324 t_arg F:MatchFail T:<suite>
328 Is ')' F:<arg> T:MatchOk
333 "comments" = Table t_commespaces F:next
334 Is ')' F:next T:MatchOk
336 "comments" = Table t_commespaces F:next
337 Is ':' F:MatchFail # a partir d ici on est dans un mot cle facteur (erreurs eventuelles)
339 "comments" = Table t_commespaces F:next
340 t_larg F:next T:<suite>
341 t_complexe F:next T:<suite>
342 t_number F:next T:<suite>
343 t_eval_expr F:next T:<suite>
346 "comments" = Table t_commespaces F:next
348 "comments" = Table t_commespaces F:next
349 Is ')' F:next T:MatchOk
351 "comments" = Table t_commespaces F:next
352 Is ':' F:<err> T:<args>
354 err7 = Table t_err F:MatchFail T:MatchOk
357 'comm' = Table is: # on attend les arguments entre () sinon erreur
360 Is ')' F:<call> T:MatchOk
371 t_mcf F:<sep> T:<mcfsuite>
373 t_larg F:next T:<suite>
374 t_complexe F:next T:<suite>
375 t_number F:next T:<suite>
376 t_eval_expr F:next T:<suite>
383 Is ')' F:<call> T:MatchOk
385 err1 = Table t_err F:MatchFail T:MatchOk
390 t_larg F:next T:<suite>
391 t_complexe F:next T:<suite>
392 t_number F:next T:<suite>
393 t_eval_expr F:next T:<suite>
394 t_arg F:next T:<suite>
399 err0 = Table t_err F:MatchFail T:MatchOk
408 t_nom_ope F:<affe> T:<comm>
410 t_comm F:MatchFail T:MatchOk
412 t_affe F:MatchFail T:MatchOk
414 err8 = Table t_err F:MatchFail T:MatchOk
417 'noreuse' = Table is:
421 Is '=': # on a affaire a un operateur ou une affectation
423 t_nom_ope F:<affe> T:<comm>
424 Is '(' F:<err8> T:next
427 t_comm F:<err> T:MatchOk
429 t_affe F:<err> T:MatchOk
431 err0 = Table t_err F:MatchFail T:MatchOk
433 err8 = Table t_err F:MatchFail T:MatchOk
436 'commande' = Table is:
437 'noreuse' = Table is:
441 Is '(' F:MatchFail # On est vraiment sur d avoir la commande FIN apres avoir identifie (
442 # On recule d un caractere pour identifier les arguments entre parenthèses
444 t_comm F:next T:MatchOk
445 err0 = Table t_err F:MatchFail T:MatchOk
447 Is ';' F:<err> T:MatchOk
449 err0 = Table t_err F:MatchFail T:MatchOk
452 'commande' = Table is:
455 t_reuse F:MatchFail T:<fin>
456 t_noreuse F:MatchFail
459 Is ';' F:<err> T:MatchOk
461 err0 = Table t_err F:MatchFail T:MatchOk
463 aster_script = Table is:
465 t_nullline F:next T:<top>
466 t_comment F:next T:<top>
467 t_formule F:next T:<top>
468 t_fin F:next T:<AfterFin>
469 t_commande F:next T:<top>
470 t_passline F:next T:<top>
473 t_nullline F:next T:<AfterFin>
474 t_passline F:next T:<AfterFin>
475 EOF Here F:<AfterFin>