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
29 from TextTools import *
34 __version__="$Name: $"
35 __Id__="$Id: tables.py,v 1.2 2003/07/01 10:26:14 salome Exp $"
38 err0='ERR0 , erreur non identifiee : '
39 err1='ERR1 , arguments commande errones : '
40 err2='ERR2 , parenthese obligatoire : '
41 err3='ERR3 , point virgule obligatoire : '
42 err4='ERR4 , ":" obligatoire avant mot cle : '
43 err5='ERR5 , mot cle facteur ou arg obligatoire : '
44 err6='ERR6 , identificateur obligatoire : '
45 err7='ERR7 , mot cle facteur errone : '
46 err8='ERR8 , signe = ou ( attendu : '
47 err9='ERR9 , ( attendue : '
48 err10='ERR10 , vexpr attendue : '
49 err11='ERR11 , ) attendue : '
51 ERRORS=(err0,err1,err2,err3,err4,err5,err6,err7,err8,err9,
55 delim=" ();:=,!&*/%\n"
61 whitespace + (MatchOk,)
67 (None,AllIn,' \t\n\r',+1)
70 (None,AllNotIn,';',+1),
77 (None,IsInSet,white_set,+1,+4),
78 (None,Is,'%',MatchFail),
80 (None,AllNotIn,'\n\r',+1),
81 (None,AllIn,'\n\r',+1),
83 (None,AllInSet,white_set,+1),
84 (None,Is,'%',MatchOk,-3),
88 (None,IsInSet,white_set,+1,+4),
89 (None,Is,'%',MatchFail),
91 (None,AllNotIn,'\n\r',+1),
92 (None,AllIn,'\n\r',+1),
94 (None,AllInSet,white_set,+1),
95 (None,Is,'%',MatchOk,-3),
102 (None,AllNotIn,'\n\r',+1),
103 (None,AllIn,'\n\r',+1,-2),
104 (None,AllInSet,white_set,+1,-3),
109 (None,IsIn,alpha+'_'),
110 (None,AllIn,alpha+'_'+number,MatchOk),
114 (None,IsIn,alpha+'_'),
115 (None,AllIn,alpha+'_'+number,MatchOk),
119 (None,IsIn,alpha+'_'),
120 (None,AllIn,alpha+'_'+number,+1),
121 (None,Table,t_commespaces,+1),
122 (None,Is,':',MatchFail),
127 (None,IsIn,alpha+'_'),
128 (None,AllIn,alpha+'_'+number,MatchOk),
135 (None,AllNotIn,"'",+1),
136 (None,Word,"''",+1,-1),
137 (None,Is,"'",MatchFail,MatchOk),
144 (None,IsIn,number,MatchFail,+4),
146 (None,IsIn,number,MatchFail),
147 (None,AllIn,number,+1),
150 (None,AllIn,number,+1),
151 # <exposant> # si pas exposant termine number trouve
152 (None,IsIn,'deDE',MatchOk),
154 (None,AllIn,number,MatchFail,MatchOk),
161 (None,IsIn,number,MatchFail,+4),
163 (None,IsIn,number,MatchFail),
164 (None,AllIn,number,+1),
167 (None,AllIn,number,+1),
168 # <exposant> # si pas exposant termine number trouve
169 (None,IsIn,'deDE',MatchOk),
171 (None,AllIn,number,MatchFail,MatchOk),
178 t_number + (MatchFail,), # ce n est pas un complexe
179 commespaces + (+1,), # a partir d ici c est un complexe => produire erreurs
182 t_number + (MatchFail,MatchOk),
184 ("MP",Word,'MP',MatchFail),
186 t_number + (MatchFail,), # ce n est pas un complexe
187 commespaces + (+1,), # a partir d ici c est un complexe => produire erreurs
190 t_number + (MatchFail,MatchOk),
192 (err7,Table,t_err,MatchFail,MatchOk),
195 # Table pour identifier le keyword PI
199 (None,Word,'PI',MatchFail),
200 (None,IsIn,alpha+'_'+number,MatchOk,+1),
202 (None,Jump,To,MatchFail),
206 ('par',Is,'(',+5,+1),
208 ('vexpr',Table,ThisTable,+26),
210 ('par2',Is,')',+25,+15),
212 t_complexe + (+1,+13),
213 ('sign',IsIn,'+-',+3,+1),
215 ('vexpr',Table,ThisTable,+19,+10),
217 t_ident + (MatchFail,),
219 ('listpar',Is,'(',+6,+1), # on peut avoir une liste de parametres
222 ('param',Table,ThisTable,+13),
225 ('finlist',Is,')',+11),
228 ('exp',Word,'**',+3,+1),
230 ('vexpr',Table,ThisTable,+6,MatchOk),
231 ('op',IsIn,'+-*/',+3,+1),
233 ('vexpr',Table,ThisTable,+3,MatchOk),
234 (None,Jump,To,MatchOk),
236 (err0,Table,t_err,MatchFail,MatchOk),
238 (err10,Table,t_err,MatchFail,MatchOk),
240 (err9,Table,t_err,MatchFail,MatchOk),
249 t_vexpr + (MatchFail,),
257 (None,Is,')',+1,MatchOk),
259 (err7,Table,t_err,MatchFail,MatchOk),
268 ('vexpr',Table,t_vexpr,+3),
270 (None,Is,')',+1,MatchOk),
272 (err7,Table,t_err,MatchFail,MatchOk),
278 (None,AllIn,number,+1),
279 (None,IsIn,delim,MatchFail,+1),
286 (None,AllNotIn,'\n\r',+1),
287 (None,AllIn,'\n\r',MatchOk),
291 ('Null',AllIn,' ;\t\n\r')
295 (None,AllNotIn,newline,+1),
301 (None,AllNotIn,';',+1),
306 (None,AllNotIn,';',+1),
308 (None,AllNotIn,'\n',+1),
309 (None,Is,'\n',MatchOk,MatchOk),
315 (None,Word,'!FORMULE'),
319 ('type',Table,t_identificateur,+29),
325 ('id',Table,t_identificateur,+23),
330 ('typ',Table,t_identmc,+1),
332 ('id',Table,t_identificateur,+17),
340 ('vexpr',Table,t_vexpr,+9),
347 (None,AllNotIn,'\n',+1),
348 (None,Is,'\n',MatchOk,MatchOk),
350 (err0,Table,t_err,MatchFail,MatchOk),
352 (err9,Table,t_err,MatchFail,MatchOk),
354 (err11,Table,t_err,MatchFail,MatchOk),
359 (None,Word,'EVAL',+1,MatchFail), # EVAL n est pas un nom d operateur, il est reserve
360 (None,IsIn,alpha+'_'),
361 (None,AllIn,alpha+'_'+number,+1),
363 (None,Is,'(',MatchFail),
369 n_string + (+1,MatchOk),
375 (None,Is,'(',MatchFail),
378 t_complexe + (+1,+4),
380 t_eval_expr + (+1,+2),
381 t_arg + (MatchFail,+1),
385 (None,Is,')',-7,MatchOk),
390 (None,Is,'(',MatchFail),
391 ("comments",Table,t_commespaces,+1),
392 (None,Is,')',+1,MatchOk),
393 t_ident + (MatchFail,),
394 ("comments",Table,t_commespaces,+1),
395 (None,Is,':',MatchFail), # a partir d ici on est dans un mot cle facteur (erreurs eventuelles)
397 ("comments",Table,t_commespaces,+1),
399 t_complexe + (+1,+4),
401 t_eval_expr + (+1,+2),
404 ("comments",Table,t_commespaces,+1),
406 ("comments",Table,t_commespaces,+1),
407 (None,Is,')',+1,MatchOk),
409 ("comments",Table,t_commespaces,+1),
410 (None,Is,':',+1,-12),
412 (err7,Table,t_err,MatchFail,MatchOk),
416 ('comm',Table,( # on attend les arguments entre () sinon erreur
419 (None,Is,')',+1,MatchOk),
433 t_complexe + (+1,+4),
435 t_eval_expr + (+1,+2),
442 (None,Is,')',-17,MatchOk),
444 (err1,Table,t_err,MatchFail,MatchOk),
451 t_complexe + (+1,+5),
453 t_eval_expr + (+1,+3),
457 (None,Jump,To,MatchOk),
459 (err0,Table,t_err,MatchFail,MatchOk),
471 t_comm + (MatchFail,MatchOk),
473 t_affe + (MatchFail,MatchOk),
475 (err8,Table,t_err,MatchFail,MatchOk),
483 (None,Is,'=',+3,+1), # on a affaire a un operateur ou une affectation
489 t_comm + (+2,MatchOk),
491 t_affe + (+1,MatchOk),
493 (err0,Table,t_err,MatchFail,MatchOk),
495 (err8,Table,t_err,MatchFail,MatchOk),
502 ('ident',Word,"FIN"),
504 (None,Is,'(',MatchFail), # On est vraiment sur d avoir la commande FIN apres avoir identifie (
505 # On recule d un caractere pour identifier les arguments entre parenthèses
507 t_comm + (+1,MatchOk),
508 (err0,Table,t_err,MatchFail,MatchOk),
511 (None,Is,';',+1,MatchOk),
513 (err0,Table,t_err,MatchFail,MatchOk),
520 t_reuse + (MatchFail,+2),
521 t_noreuse + (MatchFail,),
524 (None,Is,';',+1,MatchOk),
526 (err0,Table,t_err,MatchFail,MatchOk),
531 t_nullline + (+1,+0),
535 t_commande + (+1,-4),
536 t_passline + (+1,-5),
539 t_nullline + (+1,+0),
540 t_passline + (+1,-1),
545 print "Textools non importe"