home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / dos / prg / syntex / grammtp3.grm next >
Text File  |  1994-02-18  |  4KB  |  95 lines

  1. @ SYNTEX v2.0                                  @
  2. @ Exemple de grammaire style TPascal version 3 @
  3.  
  4. ';'= PointVirgule.
  5. ','= Virgule.
  6. '.'= Point.
  7. ':'= DeuxPoints.
  8. '..'= PointPoint.
  9. '^'= Circonflexe.
  10.  
  11. '+'= Plus.
  12. '-'= Moins.
  13. '*'= Fois.
  14. '/'= Divise.
  15.  
  16. '='= Egal.
  17. '<>'= Différent.
  18. '<'= Inférieur.
  19. '<='= InférieurOuEgal.
  20. '>'= Supérieur.
  21. '>='= SupérieurOuEgal.
  22.  
  23. '['= CrochetOuvrant.
  24. ']'= CrochetFermant.
  25. '('= ParenthèseOuvrante.
  26. ')'= ParenthèseFermante.
  27.  
  28. ':='= Devient.
  29.  
  30. DEBUT= PROGRAM NOM ';' bloc '.'.
  31.   bloc=déclarations instruction_composée.
  32.     déclarations= définition_de_constantes définition_de_types déclaration_de_variables
  33.                   déclaration_de_procédures_ou_de_fonctions.
  34.       instruction_composée= BEGIN instruction {';' instruction} END.
  35.         instruction= {instruction_simple | instruction_structurée}.
  36.           instruction_simple= affectation | appel_de_procédure.
  37.             affectation= accès_variable ':=' expression | NOM ':=' expression.
  38.               accès_variable= NOM | variable_composée | '^' variable_pointée.
  39.                 variable_composée= accès_tableau | accès_record.
  40.                   accès_tableau= accès_variable '[' expression { ',' expression} ']'.
  41.                   accès_record= NOM '.' NOM | NOM.
  42.                 variable_pointée= accès_variable.
  43.             appel_de_procédure= NOM ['('paramètre_actuel {',' paramètre_actuel} ')'].
  44.               paramètre_actuel= accès_variable | expression.
  45.           instruction_structurée= instruction_composée | test | répétition | with.
  46.             suite_instruction= instruction {';' instruction}.
  47.             test= if | case.
  48.               if= IF expression THEN instruction [ELSE instruction].
  49.               case= CASE expression OF element_case {';' element_case}
  50.                     [ELSE suite_instruction] END.
  51.                 element_case= NOM ':' instruction.
  52.             répétition= while | repeat | for.
  53.               while= WHILE expression DO instruction.
  54.               repeat= REPEAT suite_instruction UNTIL expression.
  55.               for= FOR expression to_down_to expression DO instruction.
  56.                 to_down_to= TO | DOWNTO.
  57.             with= WITH accès_variable {',' accès_variable } DO instruction.
  58.  
  59.   expression= expression_simple [comparaison expression_simple].
  60.     expression_simple= ['+'|'-'] terme {'+' terme | '-' terme | OR terme}.
  61.       terme= facteur {'*' facteur | '/' facteur | DIV facteur | MOD facteur | AND facteur}.
  62.         facteur= accès_variable | NOT facteur '(' expression ')' | facteur_ensemble.
  63.           facteur_ensemble= '[' [ element_ensemble {',' element_ensemble}] ']'.
  64.             element_ensemble= expression ['..' expression].
  65.     comparaison= '=' | '<>' | '<' | '>'.
  66.  
  67. définition_de_constantes= [CONST definition_constante ';' {definition_constante ';'} ].
  68.   definition_constante= NOM '=' CONSTANTE.
  69.  
  70. définition_de_types= [TYPE définition_type ';' {définition_type ';'}].
  71.   définition_type= TYPE '=' type.
  72.     type= NOM | construction_de_type.
  73. construction_de_type= NOM | énuméré_intervalle | type_structuré | type_pointeur.
  74.   énuméré_intervalle= type_énuméré | type_intervalle.
  75.     type_énuméré= '(' liste_de_noms ')'.
  76.     type_intervalle= CONSTANTE '..' CONSTANTE.
  77.     type_structuré= type_tableau | type_enregistrement | type_ensemble | type_fichier.
  78.       type_tableau= ARRAY '[' type_intervalle {',' type_intervalle }']' OF type.
  79.       type_enregistrement= RECORD liste_de_zones END.
  80.         liste_de_zones= zones_communes [';' zones_variantes].
  81.           zones_communes= zone {';' zone}.
  82.             zone= liste_de_noms '=' type.
  83.               liste_de_noms= NOM {',' NOM}.
  84.           zones_variantes= NOM.
  85.       type_ensemble= SET OF NOM.
  86.       type_fichier= FILE OF type.
  87.       type_pointeur= '^' NOM.
  88.  
  89. déclaration_de_variables= [VAR déclaration_variable ';' {déclaration_variable ';'}].
  90.   déclaration_variable= liste_de_noms ':' type.
  91.  
  92. déclaration_de_procédures_ou_de_fonctions= {déclaration_de_procédure ';'}.
  93.   déclaration_de_procédure= PROCEDURE NOM [liste_de_paramètres_formels] bloc.
  94.     liste_de_paramètres_formels= '(' paramètres_formels {';' paramètres_formels} ')'.
  95.       paramètres_formels= [VAR] liste_de_noms ':' NOM.