Salome HOME
pb de check box
[tools/eficas.git] / convert / Parserv5 / tables.tag
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.
8 #
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.
13 #
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.
17 #
18 #
19 # ======================================================================
20
21 """
22     Ce fichier définit une table de tags à utiliser avec le package
23     mxTextTools pour décoder un fichier au format Asterv5.
24
25     XXX Ce fichier doit etre corrigé pour incorporer deux modifications
26     réalisées dans la version V1_1p1 d'EFICAS
27 """
28 from TextTools import *
29
30 #
31 __version__="$Name: V7_main $"
32 __Id__="$Id: tables.tag,v 1.2.62.1 2013-01-24 14:25:23 pnoyret Exp $"
33 #
34
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 : '
47
48 ERRORS=(err0,err1,err2,err3,err4,err5,err6,err7,err8,err9,
49         err10,err11)
50
51 white_set=set(whitespace)
52
53 delim=" ();:=,!&*/%\n"
54
55 whitespace is:
56     AllIn ' \t'
57
58 opt_whitespace is:
59     whitespace F:MatchOk
60
61 t_opt_whitespace is:
62     whitespace F:next
63
64 t_opt_whitenl is:
65   AllIn ' \t\n\r' F:next
66
67 t_err = Table is:
68     AllNotIn ';' F:next
69     Is ';'
70     Skip back
71
72 commespaces is:
73     'comments' = Table is:
74       IsInSet white_set F:next T:<blancs>
75       Is '%' F:MatchFail
76       <comment>
77       AllNotIn '\n\r' F:next
78       AllIn '\n\r' F:next
79       <blancs>
80       AllInSet white_set F:next
81       Is '%' F:MatchOk T:<comment>
82
83 t_commespaces = Table is:
84       IsInSet white_set F:next T:<blancs>
85       Is '%' F:MatchFail
86       <comment>
87       AllNotIn '\n\r' F:next
88       AllIn '\n\r' F:next
89       <blancs>
90       AllInSet white_set F:next
91       Is '%' F:MatchOk T:<comment>
92
93 x_commespaces is:
94     'comments' = Table is:
95          <debut>
96          Is '%':
97             AllNotIn '\n\r' F:next
98             AllIn '\n\r' F:next T:<debut>
99          AllInSet white_set F:next T:<debut>
100  
101 t_ident is:
102     'ident' = Table is:
103       IsIn alpha+'_'
104       AllIn alpha+'_'+number F:MatchOk
105
106 t_identificateur = Table is:
107       IsIn alpha+'_'
108       AllIn alpha+'_'+number F:MatchOk
109
110 t_identmc = Table is:
111       IsIn alpha+'_'
112       AllIn alpha+'_'+number F:next
113       None = Table t_commespaces F:next
114       Is ':' F:MatchFail
115
116 n_ident is:
117     None = Table is:
118       IsIn alpha+'_'
119       AllIn alpha+'_'+number F:MatchOk
120
121 n_string is:
122     None = Table is:
123       Is "'"
124       <loop>
125       AllNotIn "'" F:next
126       Word "''" F:next T:<loop>
127       Is "'" F:MatchFail T:MatchOk
128
129 t_number is:
130     'num' = Table is:
131       IsIn '-+' F:next
132       Is '.' F:<entiere>
133       IsIn number  F:MatchFail T:<decimal>
134       <entiere>
135       IsIn number F:MatchFail
136       AllIn number F:next
137       Is '.' F:<exposant>
138       <decimal>
139       AllIn number F:next
140       <exposant>   # si pas exposant termine number trouve
141       IsIn 'deDE' F:MatchOk
142       IsIn '-+' F:next
143       AllIn number F:MatchFail T:MatchOk
144
145 n_number is:
146     None = Table is:
147       IsIn '-+' F:next
148       Is '.' F:<entiere>
149       IsIn number  F:MatchFail T:<decimal>
150       <entiere>
151       IsIn number F:MatchFail
152       AllIn number F:next
153       Is '.' F:<exposant>
154       <decimal>
155       AllIn number F:next
156       <exposant>   # si pas exposant termine number trouve
157       IsIn 'deDE' F:MatchOk
158       IsIn '-+' F:next
159       AllIn number F:MatchFail T:MatchOk
160
161 t_complexe is:
162   'CPLX' = Table is:
163     "RI" = Word 'RI' F:<mp>
164     commespaces F:next
165     t_number F:MatchFail  # ce n est pas un complexe
166     commespaces F:next # a partir d ici c est un complexe => produire erreurs
167     Is ',' F:next
168     commespaces F:next
169     t_number F:MatchFail T:MatchOk
170     <mp>
171     "MP" = Word 'MP' F:MatchFail
172     commespaces F:next
173     t_number F:MatchFail  # ce n est pas un complexe
174     commespaces F:next # a partir d ici c est un complexe => produire erreurs
175     Is ',' F:next
176     commespaces F:next
177     t_number F:MatchFail T:MatchOk
178     <err>
179     err7 = Table t_err F:MatchFail T:MatchOk
180
181 # Table pour identifier le keyword PI
182
183 t_PI is:
184     'PI' = Table is:
185       Word 'PI' F:MatchFail
186       IsIn alpha+'_'+number F:MatchOk T:next
187       Skip back
188       Jump To MatchFail
189
190 t_vexpr = Table is:
191     'par' = Is '(':
192       commespaces F:next
193       'vexpr' = Table ThisTable F:<err10> 
194       commespaces F:next
195       'par2' = Is ')' F:<err9> T:<op>
196     t_number F:next T:<op>
197     t_complexe F:next T:<op>
198     'sign' = IsIn '+-':
199       commespaces F:next
200       'vexpr' = Table ThisTable F:<err10> T:<op>
201     t_PI              F:next T:<op>
202     t_ident F:MatchFail
203     commespaces F:next
204     'listpar' = Is '(': # on peut avoir une liste de parametres
205       <params>
206       commespaces F:next
207       'param' = Table ThisTable F:<err10> 
208       commespaces F:next
209       Is ',' F:next T:<params>
210       'finlist' = Is ')' F:<err9>
211     <op>
212     commespaces F:next
213     'exp' = Word '**':
214       commespaces F:next
215       'vexpr' = Table ThisTable F:<err10> T:MatchOk
216     'op' = IsIn '+-*/':
217       commespaces F:next
218       'vexpr' = Table ThisTable F:<err10> T:MatchOk
219     Jump To MatchOk
220     <err>
221     err0 = Table t_err F:MatchFail T:MatchOk
222     <err10>
223     err10 = Table t_err F:MatchFail T:MatchOk
224     <err9>
225     err9 = Table t_err F:MatchFail T:MatchOk
226
227 t_liste_param is:
228   'liste' = Table is:
229     t_ident 
230     commespaces F:next
231     Is '('
232     commespaces F:next
233     t_vexpr F:MatchFail
234     <suite>
235     commespaces F:next
236     Is ',' F:<fin>
237     commespaces F:next
238     t_vexpr F:<err> T:<suite>
239     <fin>
240     commespaces F:next
241     Is ')' F:<err> T:MatchOk
242     <err>
243     err7 = Table t_err F:MatchFail T:MatchOk
244
245 t_eval_expr is:
246   'EVAL' = Table is:
247     Word 'EVAL' 
248     commespaces F:next
249     Is '(' F:<err>
250     commespaces F:next
251     'vexpr' = Table t_vexpr F:<err>
252     commespaces F:next
253     Is ')' F:<err> T:MatchOk
254     <err>
255     err7 = Table t_err F:MatchFail T:MatchOk
256
257 t_entier is:
258     'entier' = Table is:
259       IsIn number 
260       AllIn number F:next
261       IsIn delim T:next
262       Skip back
263
264 t_comment is:
265   'comment' = Table is:
266      Is '%'
267      AllNotIn '\n\r' F:next
268      AllIn '\n\r' F:MatchOk
269
270 t_nullline is:
271   'Null' = AllIn ' ;\t\n\r'
272
273 t_passline is:
274   'passline' = Table is:
275     AllNotIn newline F:next
276     IsIn newline
277
278 t_reste is:
279   'reste' = Table is:
280     AllNotIn ';' F:next
281
282 t_rest2 is:
283   'reste' = Table is:
284     AllNotIn ';' F:next
285     Is ';'
286     AllNotIn '\n' F:next
287     Is '\n' F:MatchOk T:MatchOk
288
289 t_formule is:
290   'formule' = Table is:
291     commespaces F:next
292     Word '!FORMULE' 
293     commespaces F:next
294     Is '(' F:<err9>
295     commespaces F:next
296     'type' = Table t_identificateur F:<err>
297     commespaces F:next
298     Is ':' F:<err>
299     commespaces F:next
300     Is '(' F:<err9>
301     commespaces F:next
302     'id' = Table t_identificateur F:<err>
303     commespaces F:next
304     Is '(' F:<err9>
305     <params>
306     commespaces F:next
307     'typ' = Table t_identmc F:next
308     commespaces F:next
309     'id' = Table t_identificateur F:<err>
310     commespaces F:next
311     Is ',' F:next T:<params>
312     commespaces F:next
313     Is ')' F:<params>
314     commespaces F:next
315     Is '=' F:<err>
316     commespaces F:next
317     'vexpr' = Table t_vexpr F:<err>
318     commespaces F:next
319     Is ')' F:<err11>
320     commespaces F:next
321     Is ')' F:<err11>
322     commespaces F:next
323     Is ';' F:<err>
324     AllNotIn '\n' F:next
325     Is '\n' F:MatchOk T:MatchOk
326     <err>
327     err0 = Table t_err F:MatchFail T:MatchOk
328     <err9>
329     err9 = Table t_err F:MatchFail T:MatchOk
330     <err11>
331     err11 = Table t_err F:MatchFail T:MatchOk
332     
333 t_nom_ope is:
334     'nom_ope' = Table is:
335       Word 'EVAL' F:next T:MatchFail   # EVAL n est pas un nom d operateur, il est reserve
336       IsIn alpha+'_'
337       AllIn alpha+'_'+number F:next
338       commespaces F:next
339       Is '(' F:MatchFail
340       Skip back
341
342 t_arg is:
343   'arg' = Table is:
344     n_string F:next T:MatchOk
345     n_ident 
346
347 t_larg is:
348   'larg' = Table is:
349     Is '(' F:MatchFail
350     <arg>
351     commespaces F:next
352     t_complexe F:next T:<suite>
353     t_number F:next T:<suite>
354     t_eval_expr F:next T:<suite>
355     t_arg F:MatchFail T:<suite>
356     <suite>
357     commespaces F:next
358     Is ',' F:next
359     Is ')' F:<arg> T:MatchOk
360
361 t_mcf is:
362   'mcf' = Table is:
363     Is '(' F:MatchFail
364     "comments" = Table t_commespaces F:next
365     Is ')' F:next T:MatchOk
366     t_ident F:MatchFail
367     "comments" = Table t_commespaces F:next
368     Is ':' F:MatchFail # a partir d ici on est dans un mot cle facteur (erreurs eventuelles)
369     <args>
370     "comments" = Table t_commespaces F:next
371     t_larg F:next T:<suite>
372     t_complexe F:next T:<suite>
373     t_number F:next T:<suite>
374     t_eval_expr F:next T:<suite>
375     t_arg F:<err>
376     <suite>
377     "comments" = Table t_commespaces F:next
378     Is ',' F:next
379     "comments" = Table t_commespaces F:next
380     Is ')' F:next T:MatchOk
381     t_ident F:<err>
382     "comments" = Table t_commespaces F:next
383     Is ':' F:<err> T:<args>
384     <err>
385     err7 = Table t_err F:MatchFail T:MatchOk
386
387 t_comm is:
388   'comm' = Table is: # on attend les arguments entre () sinon erreur
389     Is '(' F:<err>
390     commespaces F:next
391     Is ')' F:<call> T:MatchOk
392     <call>
393     t_ident F:<err>
394     commespaces F:next
395     Is ':' F:<err>
396     commespaces F:next
397     t_mcf F:<args>
398     <mcfsuite>
399     commespaces F:next
400     Is ',' F:next
401     commespaces F:next
402     t_mcf F:<sep> T:<mcfsuite>
403     <args>
404     t_larg F:next T:<suite>
405     t_complexe F:next T:<suite>
406     t_number F:next T:<suite>
407     t_eval_expr F:next T:<suite>
408     t_arg F:<err>
409     <suite>
410     commespaces F:next
411     <sep>
412     Is ',' F:next
413     commespaces F:next
414     Is ')' F:<call> T:MatchOk
415     <err>
416     err1 = Table t_err F:MatchFail T:MatchOk
417
418 t_affe is:
419   'affe' = Table is:
420     commespaces F:next
421     t_larg F:next T:<suite>
422     t_complexe F:next T:<suite>
423     t_number F:next T:<suite>
424     t_eval_expr F:next T:<suite>
425     t_arg F:next T:<suite>
426     Jump To <err>
427     <suite>
428     Jump To MatchOk
429     <err>
430     err0 = Table t_err F:MatchFail T:MatchOk
431
432 t_reuse is:
433   'reuse' = Table is:
434     t_opt_whitespace
435     t_ident
436     t_opt_whitespace
437     Is '=' F:<err>
438     t_opt_whitespace
439     t_nom_ope F:<affe> T:<comm>
440     <comm>
441     t_comm F:MatchFail T:MatchOk
442     <affe>
443     t_affe F:MatchFail T:MatchOk
444     <err>
445     err8 = Table t_err F:MatchFail T:MatchOk
446
447 t_noreuse is:
448   'noreuse' = Table is:
449     t_opt_whitespace
450     t_ident
451     t_opt_whitenl
452     Is '=':    # on a affaire a un operateur ou une affectation
453       t_opt_whitespace
454       t_nom_ope F:<affe> T:<comm>
455     Is '(' F:<err8> T:next
456     Skip back
457     <comm>
458     t_comm F:<err> T:MatchOk
459     <affe>
460     t_affe F:<err> T:MatchOk
461     <err>
462     err0 = Table t_err F:MatchFail T:MatchOk
463     <err8>
464     err8 = Table t_err F:MatchFail T:MatchOk
465
466 t_fin is:
467   'commande' = Table is:
468     'noreuse' = Table is:
469       t_opt_whitespace
470       'ident' = Word "FIN"
471       t_opt_whitenl
472       Is '(' F:MatchFail  # On est vraiment sur d avoir la commande FIN apres avoir identifie (
473       # On recule d un caractere pour identifier les arguments entre parenthèses
474       Skip back
475       t_comm F:next T:MatchOk
476       err0 = Table t_err F:MatchFail T:MatchOk
477     commespaces F:next
478     Is ';' F:<err> T:MatchOk
479     <err>
480     err0 = Table t_err F:MatchFail T:MatchOk
481
482 t_commande is:
483   'commande' = Table is:
484     t_opt_whitespace
485     Is '&':
486       t_reuse F:MatchFail T:<fin>
487     t_noreuse F:MatchFail 
488     <fin>
489     commespaces F:next
490     Is ';' F:<err> T:MatchOk
491     <err>
492     err0 = Table t_err F:MatchFail T:MatchOk
493
494 aster_script = Table is:
495   <top>
496   t_nullline F:next T:<top>
497   t_comment F:next T:<top>
498   t_formule F:next T:<top>
499   t_fin     F:next T:<AfterFin>
500   t_commande F:next T:<top>
501   t_passline F:next T:<top>
502   EOF Here F:<top>
503   <AfterFin>
504   t_nullline F:next T:<AfterFin>
505   t_passline F:next T:<AfterFin>
506   EOF Here F:<AfterFin>
507
508
509