1 # CONFIGURATION MANAGEMENT OF EDF VERSION
2 # ======================================================================
3 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
4 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
5 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
6 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
7 # (AT YOUR OPTION) ANY LATER VERSION.
9 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
10 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
11 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
12 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
15 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
16 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
19 # ======================================================================
22 Ce fichier définit une table de tags à utiliser avec le package
23 mxTextTools pour décoder un fichier au format Asterv5.
25 XXX Ce fichier doit etre corrigé pour incorporer deux modifications
26 réalisées dans la version V1_1p1 d'EFICAS
28 from TextTools import *
31 __version__="$Name: $"
32 __Id__="$Id: tables.tag,v 1.1.1.1 2002/03/26 09:08:45 eficas Exp $"
35 err0='ERR0 , erreur non identifiee : '
36 err1='ERR1 , arguments commande errones : '
37 err2='ERR2 , parenthese obligatoire : '
38 err3='ERR3 , point virgule obligatoire : '
39 err4='ERR4 , ":" obligatoire avant mot cle : '
40 err5='ERR5 , mot cle facteur ou arg obligatoire : '
41 err6='ERR6 , identificateur obligatoire : '
42 err7='ERR7 , mot cle facteur errone : '
43 err8='ERR8 , signe = ou ( attendu : '
44 err9='ERR9 , ( attendue : '
45 err10='ERR10 , vexpr attendue : '
46 err11='ERR11 , ) attendue : '
48 ERRORS=(err0,err1,err2,err3,err4,err5,err6,err7,err8,err9,
51 white_set=set(whitespace)
53 delim=" ();:=,!&*/%\n"
59 whitespace + (MatchOk,)
65 (None,AllIn,' \t\n\r',+1)
68 (None,AllNotIn,';',+1),
75 (None,IsInSet,white_set,+1,+4),
76 (None,Is,'%',MatchFail),
78 (None,AllNotIn,'\n\r',+1),
79 (None,AllIn,'\n\r',+1),
81 (None,AllInSet,white_set,+1),
82 (None,Is,'%',MatchOk,-3),
86 (None,IsInSet,white_set,+1,+4),
87 (None,Is,'%',MatchFail),
89 (None,AllNotIn,'\n\r',+1),
90 (None,AllIn,'\n\r',+1),
92 (None,AllInSet,white_set,+1),
93 (None,Is,'%',MatchOk,-3),
100 (None,AllNotIn,'\n\r',+1),
101 (None,AllIn,'\n\r',+1,-2),
102 (None,AllInSet,white_set,+1,-3),
107 (None,IsIn,alpha+'_'),
108 (None,AllIn,alpha+'_'+number,MatchOk),
112 (None,IsIn,alpha+'_'),
113 (None,AllIn,alpha+'_'+number,MatchOk),
117 (None,IsIn,alpha+'_'),
118 (None,AllIn,alpha+'_'+number,+1),
119 (None,Table,t_commespaces,+1),
120 (None,Is,':',MatchFail),
125 (None,IsIn,alpha+'_'),
126 (None,AllIn,alpha+'_'+number,MatchOk),
133 (None,AllNotIn,"'",+1),
134 (None,Word,"''",+1,-1),
135 (None,Is,"'",MatchFail,MatchOk),
142 (None,IsIn,number,MatchFail,+4),
144 (None,IsIn,number,MatchFail),
145 (None,AllIn,number,+1),
148 (None,AllIn,number,+1),
149 # <exposant> # si pas exposant termine number trouve
150 (None,IsIn,'deDE',MatchOk),
152 (None,AllIn,number,MatchFail,MatchOk),
159 (None,IsIn,number,MatchFail,+4),
161 (None,IsIn,number,MatchFail),
162 (None,AllIn,number,+1),
165 (None,AllIn,number,+1),
166 # <exposant> # si pas exposant termine number trouve
167 (None,IsIn,'deDE',MatchOk),
169 (None,AllIn,number,MatchFail,MatchOk),
176 t_number + (MatchFail,), # ce n est pas un complexe
177 commespaces + (+1,), # a partir d ici c est un complexe => produire erreurs
180 t_number + (MatchFail,MatchOk),
182 ("MP",Word,'MP',MatchFail),
184 t_number + (MatchFail,), # ce n est pas un complexe
185 commespaces + (+1,), # a partir d ici c est un complexe => produire erreurs
188 t_number + (MatchFail,MatchOk),
190 (err7,Table,t_err,MatchFail,MatchOk),
193 # Table pour identifier le keyword PI
197 (None,Word,'PI',MatchFail),
198 (None,IsIn,alpha+'_'+number,MatchOk,+1),
200 (None,Jump,To,MatchFail),
204 ('par',Is,'(',+5,+1),
206 ('vexpr',Table,ThisTable,+26),
208 ('par2',Is,')',+25,+15),
210 t_complexe + (+1,+13),
211 ('sign',IsIn,'+-',+3,+1),
213 ('vexpr',Table,ThisTable,+19,+10),
215 t_ident + (MatchFail,),
217 ('listpar',Is,'(',+6,+1), # on peut avoir une liste de parametres
220 ('param',Table,ThisTable,+13),
223 ('finlist',Is,')',+11),
226 ('exp',Word,'**',+3,+1),
228 ('vexpr',Table,ThisTable,+6,MatchOk),
229 ('op',IsIn,'+-*/',+3,+1),
231 ('vexpr',Table,ThisTable,+3,MatchOk),
232 (None,Jump,To,MatchOk),
234 (err0,Table,t_err,MatchFail,MatchOk),
236 (err10,Table,t_err,MatchFail,MatchOk),
238 (err9,Table,t_err,MatchFail,MatchOk),
247 t_vexpr + (MatchFail,),
255 (None,Is,')',+1,MatchOk),
257 (err7,Table,t_err,MatchFail,MatchOk),
266 ('vexpr',Table,t_vexpr,+3),
268 (None,Is,')',+1,MatchOk),
270 (err7,Table,t_err,MatchFail,MatchOk),
276 (None,AllIn,number,+1),
277 (None,IsIn,delim,MatchFail,+1),
284 (None,AllNotIn,'\n\r',+1),
285 (None,AllIn,'\n\r',MatchOk),
289 ('Null',AllIn,' ;\t\n\r')
293 (None,AllNotIn,newline,+1),
299 (None,AllNotIn,';',+1),
304 (None,AllNotIn,';',+1),
306 (None,AllNotIn,'\n',+1),
307 (None,Is,'\n',MatchOk,MatchOk),
313 (None,Word,'!FORMULE'),
317 ('type',Table,t_identificateur,+29),
323 ('id',Table,t_identificateur,+23),
328 ('typ',Table,t_identmc,+1),
330 ('id',Table,t_identificateur,+17),
338 ('vexpr',Table,t_vexpr,+9),
345 (None,AllNotIn,'\n',+1),
346 (None,Is,'\n',MatchOk,MatchOk),
348 (err0,Table,t_err,MatchFail,MatchOk),
350 (err9,Table,t_err,MatchFail,MatchOk),
352 (err11,Table,t_err,MatchFail,MatchOk),
357 (None,Word,'EVAL',+1,MatchFail), # EVAL n est pas un nom d operateur, il est reserve
358 (None,IsIn,alpha+'_'),
359 (None,AllIn,alpha+'_'+number,+1),
361 (None,Is,'(',MatchFail),
367 n_string + (+1,MatchOk),
373 (None,Is,'(',MatchFail),
376 t_complexe + (+1,+4),
378 t_eval_expr + (+1,+2),
379 t_arg + (MatchFail,+1),
383 (None,Is,')',-7,MatchOk),
388 (None,Is,'(',MatchFail),
389 ("comments",Table,t_commespaces,+1),
390 (None,Is,')',+1,MatchOk),
391 t_ident + (MatchFail,),
392 ("comments",Table,t_commespaces,+1),
393 (None,Is,':',MatchFail), # a partir d ici on est dans un mot cle facteur (erreurs eventuelles)
395 ("comments",Table,t_commespaces,+1),
397 t_complexe + (+1,+4),
399 t_eval_expr + (+1,+2),
402 ("comments",Table,t_commespaces,+1),
404 ("comments",Table,t_commespaces,+1),
405 (None,Is,')',+1,MatchOk),
407 ("comments",Table,t_commespaces,+1),
408 (None,Is,':',+1,-12),
410 (err7,Table,t_err,MatchFail,MatchOk),
414 ('comm',Table,( # on attend les arguments entre () sinon erreur
417 (None,Is,')',+1,MatchOk),
431 t_complexe + (+1,+4),
433 t_eval_expr + (+1,+2),
440 (None,Is,')',-17,MatchOk),
442 (err1,Table,t_err,MatchFail,MatchOk),
449 t_complexe + (+1,+5),
451 t_eval_expr + (+1,+3),
455 (None,Jump,To,MatchOk),
457 (err0,Table,t_err,MatchFail,MatchOk),
469 t_comm + (MatchFail,MatchOk),
471 t_affe + (MatchFail,MatchOk),
473 (err8,Table,t_err,MatchFail,MatchOk),
481 (None,Is,'=',+3,+1), # on a affaire a un operateur ou une affectation
487 t_comm + (+2,MatchOk),
489 t_affe + (+1,MatchOk),
491 (err0,Table,t_err,MatchFail,MatchOk),
493 (err8,Table,t_err,MatchFail,MatchOk),
500 ('ident',Word,"FIN"),
502 (None,Is,'(',MatchFail), # On est vraiment sur d avoir la commande FIN apres avoir identifie (
503 # On recule d un caractere pour identifier les arguments entre parenthèses
505 t_comm + (+1,MatchOk),
506 (err0,Table,t_err,MatchFail,MatchOk),
509 (None,Is,';',+1,MatchOk),
511 (err0,Table,t_err,MatchFail,MatchOk),
518 t_reuse + (MatchFail,+2),
519 t_noreuse + (MatchFail,),
522 (None,Is,';',+1,MatchOk),
524 (err0,Table,t_err,MatchFail,MatchOk),
529 t_nullline + (+1,+0),
533 t_commande + (+1,-4),
534 t_passline + (+1,-5),
537 t_nullline + (+1,+0),
538 t_passline + (+1,-1),