home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / dos / prg / syntex / stxhlpf.hlp (.txt) < prev    next >
Borland Turbo Vision Help  |  1994-07-27  |  21KB  |  630 lines

  1.  __________________________
  2.  SYNTEX 2.0 (d)
  3. rateur de Compilateur
  4.  (C) J.F. LE TENO
  5.  __________________________
  6.  S O M M A I R E
  7.  1/ Pr
  8. sentation
  9.  2/ Syntaxe
  10.  3/ Interface
  11. Utilisateur
  12.  4/ Ecrire
  13. grammaire
  14. LL(1)
  15.  5/ Copyright
  16. enregistrement
  17. logiciel
  18.  Merci 
  19.  Alix ALIX pour les "moteurs".
  20.  -------------
  21. sentation
  22.  -------------
  23. Syntex est un G
  24. rateur de Compilateur bas
  25.  sur un article d'Alix Alix paru dans les num
  26. ros 29, 31 et 35 de Pascalissime, et dont il reprend en grande partie les "moteurs". 
  27. A partir d'un fichier texte contenant la grammaire du langage pour lequel on veut 
  28. crire un compilateur, il g
  29. re le corps de l'analyseur syntaxique. 
  30. La grammaire source doit 
  31. crite avec la notation BNF (Backus-Naur Form) dans un fichier texte.  Elle doit 
  32. tre de la classe LL(1) pour 
  33. tre compilable par d
  34. scente r
  35. cursive sans rebroussement, avec un seul symbole d'avance - comme celle du Pascal, par exemple -. `
  36. Syntex implante alors en (Turbo) Pascal le corps d'un analyseur syntaxique pr
  37. dictif r
  38. cursif. +
  39. !! Attention !! Dans sa version actuelle, 
  40.  Syntex ne v
  41. rifie *PAS* que la grammaire est non contextuelle, non ambig
  42. e et LL(1). De plus, il n'effectue aucune correction, ni optimisation du texte source (traitement des r
  43. cursions 
  44.  gauche, factorisation 
  45.  gauche, 
  46. limination des productions cycliques ou vides) ]
  47.  Seul le squelette de l'analyseur lexical est produit. Il est donc n
  48. cessaire de l'
  49. crire. |
  50.  Seul le squelette de la proc
  51. dure de traitement des erreurs syntaxiques est produit. Il est donc n
  52. cessaire de l'
  53. crire. O
  54.  L'analyse s
  55. mantique est 
  56. rer dans le corps de l'analyseur syntaxique. 
  57. Retour
  58. Sommaire 
  59.  ----------------------------
  60.  Syntaxe BNF - Fichiers .Grm
  61.  ----------------------------
  62. Les fichiers contenant les descriptions grammaticales ont pour extension Grm. La syntaxe utilis
  63. e pour d
  64. crire la grammaire est d
  65. e de la notation de Backus-Naur (BNF). 
  66.  Le signe    est utilis
  67.  pour
  68.  ---------------------------------------------------------------------------
  69.    =         s
  70. parer la d
  71. finition de son texte.
  72.    |         s
  73. parer les alternatives.
  74.   [ ]        encadrer les parties de d
  75. finition qui peuvent 
  76. tre pr
  77. sentes
  78.              z
  79. ro ou une fois.
  80.  accolades   encadrer les parties de d
  81. finition qui peuvent 
  82. tre pr
  83. sentes
  84.              z
  85. ro ou plusieurs fois.
  86.    .         termine une d
  87. finition
  88.                          (tableau des m
  89. ta-symboles BNF)
  90. La priorit
  91.  est laiss
  92. e aux m
  93. tasymboles Crochets et Accolades sur le symbole |. e
  94. Afin de reconna
  95. tre les terminaux dans l'arbre syntaxique, Syntex impose les deux r
  96. gles suivantes: 
  97.  La liste des symboles de ponctuation, ie de tous les terminaux qui ne sont pas alphanum
  98. riques, doit 
  99. tre donn
  100. e en d
  101. but du fichier .Grm, en pla
  102. ant les symboles entre guillemets. 
  103.  Les terminaux qui ne sont pas des symboles de ponctuation doivent d
  104. buter par une majuscule. Ce qui interdit 
  105. galement l'usage des majuscules pour la d
  106. signation des noeuds non-terminaux. 
  107. L'ordre dans lequel les r
  108. gles de syntaxes sont pr
  109. es dans le fichier est indiff
  110. rent; Dans le fichier TEST.GRM elles sont pr
  111. es par ordre de d
  112. rivation; elles peuvent tout aussi bien 
  113. tre pr
  114. es dans le d
  115. sordre. 
  116. A noter qu'une production peut s'
  117. tendre sur plusieurs lignes. Syntex accepte les commentaires dans les fichiers .Grm, 
  118.  condition de les placer entre '@'. +
  119. Voir les fichiers GRM fournis en exemple. 
  120. Remarque tout 
  121.  fait personnelle: quel plaisir de voir que l'on peut 
  122. crire automatiquement une partie importante de ce qui a 
  123. crit 
  124.  la main! 
  125. (Note personnelle (encore!): J'y suis particuli
  126. rement sensible pour m'
  127. tre 'coltin
  128.  la main l'
  129. criture de l'interpr
  130. teur de WIZZ, un petit programme de trac
  131.  de fonctions math
  132. matiques - en tenant compte du domaine de d
  133. finition - et de calcul scientifique. C'
  134. tait un tr
  135. s bon exercice p
  136. dagogique pour moi, mais comme toujours dans ce genre d'exercices, les vertues disparaissent rapidement d
  137. s qu'on l'a fait une fois. FdNote) 
  138. Retour
  139. Sommaire 
  140.  ------------------------------------
  141.  Interface Utilisateur - release 2.0
  142.  ------------------------------------
  143. Elle s'est consid
  144. rablement am
  145. e - voir la Version History - gr
  146.  l'utilisation de Turbo Vision. L'utilisation est maintenant "intuitive" - comme on dit, histoire de rire un bon coup -, et l'aide est accessible en ligne par la touche F1. N
  147.         Editer        Debuggage     Windows
  148.  Fichier     Generer    Option
  149. Retour
  150. Sommaire 
  151. Retour
  152. Sommaire 
  153.  File|New
  154.  ---------
  155. Ouvre une nouvelle fen
  156. tre d'
  157. dition. 
  158.  File|Open
  159.  ----------
  160. Affiche la boite de s
  161. lection de fichier positionn
  162. e par d
  163. faut sur les fichiers d'extension GRM. 
  164.  File|Save
  165.  ----------
  166. Sauve le contenu de l'
  167. diteur courant dans un fichier, en passant 
  168. ventuellement par la boite de s
  169. lection de fichier si le fichier n'est pas encore nomm
  170.  File|Save As
  171.  -------------
  172. Sauve le contenu de l'
  173. diteur courant dans un fichier, en passant par la boite de s
  174. lection de fichier.  
  175.  File|Save All
  176.  --------------
  177. Sauve le contenu de tous les 
  178. diteurs ouverts et ayant 
  179.  modifi
  180. Retour
  181. Sommaire 
  182. Retour
  183. Sommaire 
  184.  Generate|Generate
  185.  ------------------
  186. re le corps de l'analyseur syntaxique correspondant 
  187.  la grammaire contenue dans la fen
  188. tre d'
  189. dition courante. f
  190. Le nom de l'analyseur reprend celui du fichier .GRM dont il descend, et lui ajoute l'extension .PAS. &
  191.  Generate|Options
  192.  -----------------
  193. Permet de sp
  194. cifier si le code Pascal produit doit 
  195. tre format
  196.  comme un Programme ou comme une Unit
  197. Par d
  198. fault, c'est un Programme qui est g
  199.  Generate|Make
  200.  --------------
  201. Permet de compiler le code Pascal produit par Generate afin de v
  202. rifier qu'il 'tourne' - afin 
  203. ventuellement de modifier la grammaire. 
  204. Retour
  205. Sommaire 
  206.  Debug|Syntax Tree
  207.  ------------------
  208. Affiche l'arbre syntaxique de la derni
  209. re grammaire analys
  210. Les branches peuvent 
  211. tre d
  212. velopp
  213. es ou r
  214. duites afin de faciliter l'analyse de la structure de l'arbre. $
  215.  Debug|Key Words
  216.  ----------------
  217. Affiche la liste des mots-clef - les terminaux - de la derni
  218. re grammaire analys
  219.  Debug|Ponctuation
  220.  ------------------
  221. Affiche le liste des caract
  222. res de ponctuation d
  223. finis dans la derni
  224. re grammaire analys
  225. Retour
  226. Sommaire 
  227.  Options|Video
  228.  --------------
  229. Passe de l'affichage sur 25 lignes 
  230.  l'affichage 43 lignes (EGA) ou 50 lignes (VGA). .
  231.  Options|Save Desktop
  232.  ---------------------
  233. Sauvegarde la configuration du bureau - fen
  234. tre ouvertes et param
  235. tres s
  236. lectionn
  237. s - sur disque. M
  238. ** Cette option n'est pas impl
  239. e sur cette version non enregistr
  240. e. ** .
  241.  Options|Load Desktop
  242.  ---------------------
  243. Restaure la configuration du bureau - fen
  244. tre ouvertes et param
  245. tres s
  246. lectionn
  247. s - pr
  248. alablement sauv
  249. e sur le disque. M
  250. ** Cette option n'est pas impl
  251. e sur cette version non enregistr
  252. e. ** 
  253. Retour
  254. Sommaire 
  255. Retour
  256. Sommaire 
  257.  -----------------------------------
  258.  Comment 
  259. crire une grammaire LL(1)
  260.  -----------------------------------
  261.  a. Survol
  262. structure
  263. compilateur
  264.  b. L'analyse
  265. syntaxique
  266. descente
  267. cursive
  268. symbole
  269. vision
  270.  c. Grammaire
  271. LL(1)
  272.  d. Premier
  273.  e. Corrections
  274.  f. Consid
  275. rations
  276. diverses
  277. Retour
  278. Sommaire 
  279.  a/ Survol de la structure d'un compilateur
  280.  -------------------------------------------
  281. Un compilateur est un programme qui, 
  282.  partir d'un texte source 
  283. crit dans un langage donn
  284. , produit une traduction. Il doit donc lire le texte source, v
  285. rifier qu'il est correct, et le traduire. Ces fonctions sont r
  286. parties entre diff
  287. rents modules. 
  288. La lecture du source est effectu
  289. e par l'analyseur lexical, dont le r
  290. le est de d
  291. couper le source en unit
  292.  lexicales correspondant au langage utilis
  293.  - en mots -. }
  294. Vient ensuite l'analyseur syntaxique, qui a pour r
  295. le de v
  296. rifier que les suites d'unit
  297. s lexicales produites par l'analyseur lexical - les phrases -sont "grammaticalement" correctes, par rapport 
  298.  la grammaire du langage utilis
  299. . C'est g
  300. ralement l'analyseur syntaxique qui, au fur et 
  301.  mesure de ses besoins, demande 
  302.  l'analyseur lexical de lui fournir des unit
  303. s lexicales. 
  304. Puis l'analyseur s
  305. mantique entre en jeux pour v
  306. rifier ces phrases grammaticalement correctes ont un "sens". Il lui revient en g
  307. ral de traiter les aspects contextuels du langage qui ne peuvent 
  308. tre trait
  309. s par la grammaire qui, comme son nom l'indique, est non contextuelle. Parmi ces aspects contextuels, citons le contr
  310. le de type, l'existence et la visibilit
  311.  des identificateurs, etc. 
  312. Enfin, le dernier module produit la traduction. Cette phase peut 
  313. tre trait
  314. e de fa
  315. ons bien diff
  316. rentes, avec production d'un code interm
  317. diaire, ou non, etc. Cette derni
  318. re phase, fortement d
  319. pendante de la machine d
  320. stination, est appell
  321. e la partie finale d'un compilateur, par opposition aux phases d'analyse (lexicale, syntaxique, et s
  322. mantique) qui sont regroup
  323. es sous le terme de partie frontale. 
  324. Syntex est donc une machine 
  325.  fabriquer des analyseurs syntaxiques, ie des v
  326. rificateurs de correction grammaticale, 
  327.  partir d'une description de la grammaire souhait
  328. Il existe bien 
  329. videmment plusieurs approches pour pratiquer une analyse syntaxique, de m
  330. me qu'il existe plusieurs types de grammaires. De plus, certains types de grammaires n
  331. cessitent l'utilisation de certaines approches, et r
  332. ciproquement. 
  333. Dans le cas de Syntex, l'analyse syntaxique se fait par descente r
  334. cursive sur des grammaires de la classe LL(1). Voyons donc tout cela en d
  335. tail. 
  336. Retour
  337. Sommaire 
  338.  b/ L'analyse syntaxique par descente r
  339. cursive avec un symbole de pr
  340. vision
  341.  ----------------------------------------------------------------------------
  342. Les Production - r
  343. gles de grammaire - contenues dans un fichier .Grm sont en fait des sch
  344. mas qu'une phrase doit suivre pour 
  345. tre correcte vis 
  346.  vis de cette grammaire. Certains 
  347. ments de ces sch
  348. mas sont eux-m
  349. crits dans le fichier .GRM comme des sch
  350. mas: ce sont des symboles non terminaux. D'autres de donne lieu 
  351.  aucun d
  352. veloppement: ce sont les symboles terminaux. \
  353. velopper chacun de ces sch
  354. mas au sein d'une production s'appelle d
  355. river la production. 
  356. D'autre part, certaines de ces productions 
  357. tant r
  358. cursives, ou imbriqu
  359. es, il est n
  360. cessaire de disposer d'un point d'entrer unique, appel
  361.  Axiome. 
  362. L'ensemble des productions forme un Arbre Syntaxique (celui que construit Syntex) dont l'axiome est la racine. Les branches sont constitu
  363. es des productions, et les feuilles des symboles terminaux. 
  364. L'analyse syntaxique descendante consiste 
  365. rifier qu'une phrase est en tout point conforme aux productions; pour cela on v
  366. rifie d'abord que l'axiome est v
  367. , puis au fur et 
  368.  mesure que l'on avance dans la phrase, on d
  369. rive - d
  370. veloppe - les productions qui doivent 
  371. tre mises en jeu, en fonction du symbole de pr
  372. vision. On "descend" ainsi dans l'arbre syntaxique, de la racine vers les feuilles (en informatique, une structure d'arbre a toujours la t
  373. te en bas). Une analyse syntaxique descendante proc
  374. de ainsi: 
  375.  Pour un symbole donn
  376.  partir de la position courante dans l'arbre syntaxique, on d
  377. veloppe au maximum les productions possibles pour trouver le premier terminal. ^
  378.  Si le symbole et le terminal correspondent, on lis le symbole suivant dans la phrase, sinon, on parcourt les 
  379. ventuelles alternatives de la production pour comparer le symbole avec les terminaux des alternatives, jusqu'
  380.  trouver une correspondance, ou jusqu'
  381. puisement des terminaux possibles 
  382.  partir de cette position dans l'arbre syntaxique. y
  383. Si aucune correspondance n'est trouv
  384. e entre le symbole et les terminaux possibles, deux strat
  385. gies sont envisageables: h
  386.  soit on rebrousse chemin jusqu'
  387.  l'embranchement pr
  388. dent, pour essayer d'
  389. ventuelles alternatives, %
  390.  soit on d
  391. clare qu'il y a erreur. 
  392. Syntex impl
  393. mente la deuxi
  394. me alternative, qui correspond 
  395.  un analyseur pr
  396. dictif sans rebroussement avec un symbole de pr
  397. vision. Ce choix implique que la grammaire ait des propri
  398. s particuli
  399. res, que nous d
  400. taillerons plus loin. 
  401. Retour
  402. Sommaire 
  403.  c/ Grammaire LL(1)
  404.  -------------------
  405. Il est possible de construire automatiquement un analyseur syntaxique par descente recursive sans rebroussement et avec un seul symbole d'avance 
  406.  partir d'une grammaire appartenant 
  407.  la classe LL(1) - c'est ce que fait Syntex. Un tel analyseur syntaxique s'appelle analyseur pr
  408. dictif r
  409. cursif, que nous nous contenterons d'appeler par son petit nom - "analyseur pr
  410. dictif". 
  411. LL(1) signifie "Left to right scanning - Leftmost derivation" (ie. parcours du source de Gauche 
  412.  droite - d
  413. rivation 
  414.  Gauche); le "1" indique que chaque 
  415. tape ne n
  416. cessite que la conna
  417. ssance du symbole qui suit pour d
  418. cider de la suite - d'o
  419.  le qualificatif de "pr
  420. dictif" -. b
  421. En pr
  422. sence d'une production A, Syntex part 
  423.  la recherche des terminaux correspondants 
  424.  cette expression apr
  425. rivation, afin de d
  426. terminer la prochaine production 
  427.  invoquer. Il parcourt 
  428. galement chaque alternative, si toutefois il y en a. Il produit ainsi une liste de tous les premiers terminaux accessibles apr
  429. rivation de la production A. "
  430. Pourquoi les premiers seulement? 
  431. Parce que c'est une propri
  432.  des grammaires LL(1), de toujours permettre de d
  433. cider de la production suivante 
  434.  utiliser 
  435.  la "vue" de l'unique symbole de pr
  436. -vision produit 
  437.  la demande de l'analyseur syntaxique par l'analyseur lexical. 
  438. Retour
  439. Sommaire 
  440.  d/ Premier jet
  441.  ---------------
  442. Il existe une d
  443. finition de la classe LL(1) qui permet de v
  444. rifier si une grammaire donn
  445. e est bien LL(1). 
  446. Une grammaire donn
  447. e est de la classe LL(1) si et seulement si, chaque fois qu'elle contient une production de la forme A = B | C, k
  448. 1. Pour tout terminal a, B et C ne peuvent se d
  449. river tous les deux en a; ie. "partant de deux endroits diff
  450. rents, on doit aboutir 
  451.  deux destinations diff
  452. rentes". En effet, comme l'on d
  453. cide du traitement 
  454.  effectuer en fonction de la nature de la destination atteinte, on ne saurait plus s'il faut faire un traitement B ou un traitement C, il y a ambigu
  455. 2. B et C ne doivent pas tous les deux aboutir 
  456.  la cha
  457. ne vide; c'est 
  458.  dire que "l'un au moins des deux chemins doit aboutir quelque part". En effet, si B et C aboutissaient toutes les deux 
  459.  la cha
  460. ne vide, l'ambigu
  461.  sur celle 
  462.  choisir pour le traitement r
  463. apparaitrait. 
  464. 3. Si C aboutit 
  465.  la cha
  466. ne vide, B ne doit pas pouvoir aboutir 
  467.  un terminal que l'on peut trouver apr
  468. s A; ie on interdit des constructions du genre "if then then write('toto')" o
  469.  l'on aurait la m
  470. me cha
  471. ne pour un identificateur et pour un mot cl
  472. , car l'analyseur syntaxique aurait le risque de "brancher" sur la mauvaise production, et de refuser une construction qui est pourtant correcte. ~
  473. En pratique on ne v
  474. rifie pas syst
  475. matiquement que la d
  476. finition est respect
  477. e, mais on proc
  478. de en r
  479. digeant un premier jet pour sa grammaire, puis on effectue les corrections. Cette deuxi
  480. thode ne garantit pas que le r
  481. sultat soit dans la classe LL(1), car elle ne v
  482. rifie pas que la grammaire n'est ni ambig
  483. e ni contextuelle, mais elle fonctionne dans la majorit
  484.  des cas. p
  485. Inspirez-vous des fichiers .Grm fournis en exemples pour voir le style 
  486.  adopter dans votre prose personnelle. 
  487. Retour
  488. Sommaire 
  489.  e/ Corrections
  490.  ---------------
  491. On peut effectuer deux types de corrections: des corrections sur la grammaire, et des corrections sur le code produit. 
  492. Afin que la grammaire soit effectivement adapt
  493.  la construction automatique d'un analyseur pr
  494. dictif, ses productions doivent 
  495. viter certaines constructions, dont voici la liste. 
  496.  La R
  497. cursion 
  498.  Gauche: 
  499. Une production est r
  500. cursive 
  501.  gauche lorsqu'elle est de la forme A = Aa, o
  502.  'A' est le nom de la production, et 'a' une cha
  503. ne quelconque situ
  504.  droite de la production - la "suite de la production". On constate que la production A commence par s'appeler elle-m
  505. me. "
  506. Comment le probl
  507. me survient-il? 
  508. L'analyseur syntaxique appelle l'analyseur lexical, et re
  509. oit en r
  510. ponse une unit
  511.  lexicale. Supposons alors que pour traiter cette unit
  512.  lexicale, il faille faire appel 
  513.  la production A. A appelle 
  514.  son tour la production A, qui est son premier terme, et cela sans passer 
  515.  l'unit
  516.  lexicale suivante, puisque seul l'appel d'un 
  517. ment terminal de la grammaire provoque la demande d'une nouvelle unit
  518.  lexicale. L'analyseur syntaxique boucle alors r
  519. cursivement ind
  520. finiment sur la production A. Probl
  521. me. #
  522. Eliminer une r
  523. cursivit
  524. diate 
  525.  gauche revient 
  526.  transformer A = Aa|b en A = bA' et A' = [aA']. Il arrive parfois que la r
  527. cursivit
  528.  gauche n'apparaisse qu'apr
  529. s avoir d
  530.  une production au moins deux fois; ce dernier cas doit 
  531. tre trait
  532.  globalement - nous n'en dirons pas plus. #
  533.  La non Factorisation 
  534.  Gauche: h
  535. Certaines productions peuvent 
  536. tre de la forme A = BC | BD, o
  537.  'B','C', et 'D' sont des non terminaux. :
  538. Au cours de son fonctionnement l'anayseur syntaxique est amen
  539.  traiter la production A, ayant 
  540.  sa disposition une unit
  541.  lexicale relevant de la production B. Le probl
  542. me vient alors de ce qu'il lui est impossible de d
  543. cider "
  544.  la seule vue de l'unit
  545.  lexicale" - le "1" de "LL(1)", quelle alternative choisir. M
  546. Factoriser 
  547.  gauche consiste 
  548.  remplacer A = BC|BD par A = BA' et A' = C|D. 
  549.  Les cycles: z
  550. Une grammaire contient un cycle si une production A peut se trouver d
  551. e en A, apr
  552. ventuellement plusieurs 
  553. tapes. 
  554.  Les productions vides: +
  555. Une production vide est de la forme A = . 
  556. Concernant le code produit, la souplesse - relative - de Syntex par rapport 
  557.  la d
  558. finition stricte des grammaires LL(1) permet de g
  559. rer du code pour des grammaires "presque" LL(1), quitte 
  560.  faire quelques modifications par la suite sur le code lui-m
  561. Retour
  562. Sommaire 
  563.  f/ Consid
  564. rations diverses
  565.  ---------------------------
  566. Lorsque Syntex cherche les premiers terminaux d'une expression accessibles par d
  567. rivation, si ces terminaux pr
  568. sentent des alternatives inclues dans un m
  569. tasymbole, seul le premier terminal de la premi
  570. re alternative est pris en compte. Notons que cette limitation n'est pas impos
  571. e par les grammaires LL(1) ni par la m
  572. thode d'analyse pr
  573. dictive r
  574. cursive. Cette difficult
  575.  est facile 
  576.  contourner en retouchant l
  577. rement le code produit par Syntex. [
  578. Syntex est lui-m
  579. me un compilateur, qui traduit le texte contenu dans le fichier .Grm en un programme TPascal plac
  580.  dans un fichier .Pas. L'option "MakeTree" correspond ainsi 
  581.  la fonction d'analyse lexicale et syntaxique du texte source, alors que l'option "Generate" regroupe, elle, les fonctions d'analyse s
  582. mantique et de production de code.     
  583. Bien que Syntex accepte l'imbrication des m
  584. tasymboles [] et Accolades sur une seule production, la phase de g
  585. ration de code 
  586.  partir de l'arbre syntaxique ne les traite pas. Il est alors n
  587. cessaire de passer par des sous-productions traitant ces imbrications.     
  588. Syntex n'est pas - pour le moment (?) - un g
  589. rateur d'analyseur lexical, et seul le corps de cette proc
  590. dure est g
  591.  automatiquement. Cependant, et bien qu'une structure proc
  592. durale 
  593.  base d'appels r
  594. cursifs soit un peut de la grosse artillerie - on passe plus traditionnellement par des automates construits 
  595.  partir d'expressions r
  596. res -, il est tout 
  597.  fait possible d'en passer par l
  598.  pour certaines parties d'analyse lexicale; la grammaire Pascal des nombres r
  599. els donn
  600. e au chapitre /3 en est un exemple. 
  601. Retour
  602. Sommaire 
  603.  --------------------------
  604.           SYNTEX
  605. rateur de Compilateur
  606.             --
  607.       Release 2.0 (d)
  608.  --------------------------
  609.      (C) J.F. Le T
  610.  CompuServe ID 100346,3212
  611.  --------------------------
  612. Ce programme n'est PAS dans le 'domaine public', et aussi g
  613. nial ou aussi nul qu'il puisse vous para
  614. tre, il repr
  615. sente un investissement personnel certain en temps et en sueur. Je n'exige en retour le versement d'aucune licence, mais j'appr
  616. cierais grandement un signe de vie - de solidarit
  617. , de reconnaissance ?!... - de votre part, si toutefois vous d
  618. cidez d'utiliser ce logiciel. 
  619. Sentez-vous donc libre de m'envoyer ce qui vous semble bon (chocolat, coup de fil, mat
  620. riel inutilis
  621. , carte postale, quelques sous, ...) - cela fera office d'enregistrement; ceux d'entre vous qui ont d
  622.  programm
  623.  comprendront ... 
  624. Je me ferais alors un plaisir de mettre les sources 
  625.  votre disposition, et je serais 
  626. galement heureux de recevoir toute critique, tout conseil ou suggestion sur Syntex 2.0. 
  627. L'Auteur. 
  628. Retour
  629. Sommaire 
  630.