1 # -*- coding: utf-8 -*-
2 # CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
20 # ======================================================================
23 Ce fichier définit une table de tags à utiliser avec le package
24 mxTextTools pour décoder un fichier au format Asterv5.
26 XXX Ce fichier doit etre corrigé pour incorporer deux modifications
27 réalisées dans la version V1_1p1 d'EFICAS
29 from TextTools import *
32 __version__="$Name: V7_main $"
33 __Id__="$Id: tables.py,v 1.5.52.1 2013-01-24 14:25:23 pnoyret Exp $"
36 err0='ERR0 , erreur non identifiee : '
37 err1='ERR1 , arguments commande errones : '
38 err2='ERR2 , parenthese obligatoire : '
39 err3='ERR3 , point virgule obligatoire : '
40 err4='ERR4 , ":" obligatoire avant mot cle : '
41 err5='ERR5 , mot cle facteur ou arg obligatoire : '
42 err6='ERR6 , identificateur obligatoire : '
43 err7='ERR7 , mot cle facteur errone : '
44 err8='ERR8 , signe = ou ( attendu : '
45 err9='ERR9 , ( attendue : '
46 err10='ERR10 , vexpr attendue : '
47 err11='ERR11 , ) attendue : '
49 ERRORS=(err0,err1,err2,err3,err4,err5,err6,err7,err8,err9,
52 white_set=set(whitespace)
54 delim=" ();:=,!&*/%\n"
60 whitespace + (MatchOk,)
66 (None,AllIn,' \t\n\r',+1)
69 (None,AllNotIn,';',+1),
76 (None,IsInSet,white_set,+1,+4),
77 (None,Is,'%',MatchFail),
79 (None,AllNotIn,'\n\r',+1),
80 (None,AllIn,'\n\r',+1),
82 (None,AllInSet,white_set,+1),
83 (None,Is,'%',MatchOk,-3),
87 (None,IsInSet,white_set,+1,+4),
88 (None,Is,'%',MatchFail),
90 (None,AllNotIn,'\n\r',+1),
91 (None,AllIn,'\n\r',+1),
93 (None,AllInSet,white_set,+1),
94 (None,Is,'%',MatchOk,-3),
101 (None,AllNotIn,'\n\r',+1),
102 (None,AllIn,'\n\r',+1,-2),
103 (None,AllInSet,white_set,+1,-3),
108 (None,IsIn,alpha+'_'),
109 (None,AllIn,alpha+'_'+number,MatchOk),
113 (None,IsIn,alpha+'_'),
114 (None,AllIn,alpha+'_'+number,MatchOk),
118 (None,IsIn,alpha+'_'),
119 (None,AllIn,alpha+'_'+number,+1),
120 (None,Table,t_commespaces,+1),
121 (None,Is,':',MatchFail),
126 (None,IsIn,alpha+'_'),
127 (None,AllIn,alpha+'_'+number,MatchOk),
134 (None,AllNotIn,"'",+1),
135 (None,Word,"''",+1,-1),
136 (None,Is,"'",MatchFail,MatchOk),
143 (None,IsIn,number,MatchFail,+4),
145 (None,IsIn,number,MatchFail),
146 (None,AllIn,number,+1),
149 (None,AllIn,number,+1),
150 # <exposant> # si pas exposant termine number trouve
151 (None,IsIn,'deDE',MatchOk),
153 (None,AllIn,number,MatchFail,MatchOk),
160 (None,IsIn,number,MatchFail,+4),
162 (None,IsIn,number,MatchFail),
163 (None,AllIn,number,+1),
166 (None,AllIn,number,+1),
167 # <exposant> # si pas exposant termine number trouve
168 (None,IsIn,'deDE',MatchOk),
170 (None,AllIn,number,MatchFail,MatchOk),
177 t_number + (MatchFail,), # ce n est pas un complexe
178 commespaces + (+1,), # a partir d ici c est un complexe => produire erreurs
181 t_number + (MatchFail,MatchOk),
183 ("MP",Word,'MP',MatchFail),
185 t_number + (MatchFail,), # ce n est pas un complexe
186 commespaces + (+1,), # a partir d ici c est un complexe => produire erreurs
189 t_number + (MatchFail,MatchOk),
191 (err7,Table,t_err,MatchFail,MatchOk),
194 # Table pour identifier le keyword PI
198 (None,Word,'PI',MatchFail),
199 (None,IsIn,alpha+'_'+number,MatchOk,+1),
201 (None,Jump,To,MatchFail),
205 ('par',Is,'(',+5,+1),
207 ('vexpr',Table,ThisTable,+26),
209 ('par2',Is,')',+25,+15),
211 t_complexe + (+1,+13),
212 ('sign',IsIn,'+-',+3,+1),
214 ('vexpr',Table,ThisTable,+19,+10),
216 t_ident + (MatchFail,),
218 ('listpar',Is,'(',+6,+1), # on peut avoir une liste de parametres
221 ('param',Table,ThisTable,+13),
224 ('finlist',Is,')',+11),
227 ('exp',Word,'**',+3,+1),
229 ('vexpr',Table,ThisTable,+6,MatchOk),
230 ('op',IsIn,'+-*/',+3,+1),
232 ('vexpr',Table,ThisTable,+3,MatchOk),
233 (None,Jump,To,MatchOk),
235 (err0,Table,t_err,MatchFail,MatchOk),
237 (err10,Table,t_err,MatchFail,MatchOk),
239 (err9,Table,t_err,MatchFail,MatchOk),
248 t_vexpr + (MatchFail,),
256 (None,Is,')',+1,MatchOk),
258 (err7,Table,t_err,MatchFail,MatchOk),
267 ('vexpr',Table,t_vexpr,+3),
269 (None,Is,')',+1,MatchOk),
271 (err7,Table,t_err,MatchFail,MatchOk),
277 (None,AllIn,number,+1),
278 (None,IsIn,delim,MatchFail,+1),
285 (None,AllNotIn,'\n\r',+1),
286 (None,AllIn,'\n\r',MatchOk),
290 ('Null',AllIn,' ;\t\n\r')
294 (None,AllNotIn,newline,+1),
300 (None,AllNotIn,';',+1),
305 (None,AllNotIn,';',+1),
307 (None,AllNotIn,'\n',+1),
308 (None,Is,'\n',MatchOk,MatchOk),
314 (None,Word,'!FORMULE'),
318 ('type',Table,t_identificateur,+29),
324 ('id',Table,t_identificateur,+23),
329 ('typ',Table,t_identmc,+1),
331 ('id',Table,t_identificateur,+17),
339 ('vexpr',Table,t_vexpr,+9),
346 (None,AllNotIn,'\n',+1),
347 (None,Is,'\n',MatchOk,MatchOk),
349 (err0,Table,t_err,MatchFail,MatchOk),
351 (err9,Table,t_err,MatchFail,MatchOk),
353 (err11,Table,t_err,MatchFail,MatchOk),
358 (None,Word,'EVAL',+1,MatchFail), # EVAL n est pas un nom d operateur, il est reserve
359 (None,IsIn,alpha+'_'),
360 (None,AllIn,alpha+'_'+number,+1),
362 (None,Is,'(',MatchFail),
368 n_string + (+1,MatchOk),
374 (None,Is,'(',MatchFail),
377 t_complexe + (+1,+4),
379 t_eval_expr + (+1,+2),
380 t_arg + (MatchFail,+1),
384 (None,Is,')',-7,MatchOk),
389 (None,Is,'(',MatchFail),
390 ("comments",Table,t_commespaces,+1),
391 (None,Is,')',+1,MatchOk),
392 t_ident + (MatchFail,),
393 ("comments",Table,t_commespaces,+1),
394 (None,Is,':',MatchFail), # a partir d ici on est dans un mot cle facteur (erreurs eventuelles)
396 ("comments",Table,t_commespaces,+1),
398 t_complexe + (+1,+4),
400 t_eval_expr + (+1,+2),
403 ("comments",Table,t_commespaces,+1),
405 ("comments",Table,t_commespaces,+1),
406 (None,Is,')',+1,MatchOk),
408 ("comments",Table,t_commespaces,+1),
409 (None,Is,':',+1,-12),
411 (err7,Table,t_err,MatchFail,MatchOk),
415 ('comm',Table,( # on attend les arguments entre () sinon erreur
418 (None,Is,')',+1,MatchOk),
432 t_complexe + (+1,+4),
434 t_eval_expr + (+1,+2),
441 (None,Is,')',-17,MatchOk),
443 (err1,Table,t_err,MatchFail,MatchOk),
450 t_complexe + (+1,+5),
452 t_eval_expr + (+1,+3),
456 (None,Jump,To,MatchOk),
458 (err0,Table,t_err,MatchFail,MatchOk),
470 t_comm + (MatchFail,MatchOk),
472 t_affe + (MatchFail,MatchOk),
474 (err8,Table,t_err,MatchFail,MatchOk),
482 (None,Is,'=',+3,+1), # on a affaire a un operateur ou une affectation
488 t_comm + (+2,MatchOk),
490 t_affe + (+1,MatchOk),
492 (err0,Table,t_err,MatchFail,MatchOk),
494 (err8,Table,t_err,MatchFail,MatchOk),
501 ('ident',Word,"FIN"),
503 (None,Is,'(',MatchFail), # On est vraiment sur d avoir la commande FIN apres avoir identifie (
504 # On recule d un caractere pour identifier les arguments entre parenthèses
506 t_comm + (+1,MatchOk),
507 (err0,Table,t_err,MatchFail,MatchOk),
510 (None,Is,';',+1,MatchOk),
512 (err0,Table,t_err,MatchFail,MatchOk),
519 t_reuse + (MatchFail,+2),
520 t_noreuse + (MatchFail,),
523 (None,Is,';',+1,MatchOk),
525 (err0,Table,t_err,MatchFail,MatchOk),
530 t_nullline + (+1,+0),
534 t_commande + (+1,-4),
535 t_passline + (+1,-5),
538 t_nullline + (+1,+0),
539 t_passline + (+1,-1),