dburner

Sintaxa limbaj programare

Nov 23rd, 2012
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. *** Int = datele de sort Int din INT
  2. *** Bool = datele de sort Bool din BOOL
  3. *** Qid = datele de sort Qid din QID
  4.  
  5. *** SINTAXA IMP
  6. *** Name ::= Qid |a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z *** identificatori
  7. *** AExp ::= Int | Name
  8. *** |AExp + AExp
  9. *** |AExp - AExp
  10. *** |AExp * AExp
  11. *** |AExp / AExp
  12. *** BExp ::= Bool |
  13. *** |not BExp
  14. *** |BExp and BExp
  15. *** |BExp or BExp
  16. *** |AExp <= AExp
  17. *** |AExp >= AExp
  18. *** |AExp equals AExp
  19. *** Stmt ::= skip
  20. *** |Name = AExp
  21. *** |if BExp then Stmt else Stmt
  22. *** |for (Stmt;BExp;Stmt)Stmt
  23. *** |while BExp Stmt
  24. *** |{StmtL}
  25. *** StmtL ::= Stmt
  26. *** |StmtL ; StmtL
  27.  
  28. ***neterminalele->sorturi
  29. ***productiile -> operatii
  30. ***name(neterminal) -> a(terminal)
  31.  
  32. ***Modul sintaxa identificatori:
  33. fmod SINTAXA-ID is
  34. protecting QID .
  35. sort Name .
  36. subsort Qid < Name .
  37. ops a b c d e f g h i j k l m n o p q r s t u v w x y z : -> Name .
  38. endfm
  39.  
  40. ***Modul sintaxa expresii aritmetice: kzLas7cQ
  41. fmod SINTAXA-AEXP is
  42. protecting SINTAXA-ID .
  43. protecting INT .
  44. sort AExp .
  45. subsort Name Int < AExp .
  46.  
  47. op _+_: AExp AExp -> AExp [ditto] .
  48. op _-_: AExp AExp -> AExp [ditto] .
  49. op _*_: AExp AExp -> AExp [ditto] .
  50. op _/_: AExp AExp -> AExp [prec 33] .
  51. endfm
  52.  
  53. ***Modul expresii booleene
  54. fmod SINTAXA-EXPB is
  55. protecting SINTAXA-AEXP .
  56. sort BExp .
  57. subsort Bool < BExp .
  58.  
  59. op not_: BExp -> BExp [ditto] .
  60. op _and_: BExp BExp -> BExp [ditto] .
  61. op _or_: BExp BExp -> BExp [ditto] .
  62. op _<=_: AExp AExp -> BExp [ditto] .
  63. op _>=_: AExp AExp -> BExp [ditto] .
  64. op _equals_: AExp AExp -> BExp .
  65. endfm
  66.  
  67. fmod SINTAXA-STMT is
  68. protecting SINTAXA-EXPB .
  69. sort Stmt .
  70. ops skip : -> Stmt .
  71. op _=_: Name AExp -> Stmt .
  72. op if_then_else_: BExp Stmt Stmt -> Stmt .
  73. op for(_;_;_)_: Stmt BExp Stmt Stmt -> Stmt .
  74. op while(_)_: BExp Stmt -> Stmt .
  75. op {_}: Stmt -> Stmt .
  76. op _;_: Stmt Stmt -> Stmt .***compunerea instructiuniilor
  77. endfm
  78.  
  79. fmod PROGRAM is
  80. sort Program .
  81. op _,_: Stmt AExp -> ...
  82. endfm
Advertisement
Add Comment
Please, Sign In to add comment