Advertisement
Guest User

Untitled

a guest
Mar 1st, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. Σύμφωνα με τη γραμματική της Ciscal:
  2. ```
  3. <IF-STAT> ::= if ( <CONDITION> ) <BRACK-OR-STAT> <ELSEPART>
  4. <BRACK-OR-STAT> ::= <BRACKETS-SEQ> | <STATEMENT>
  5. <BRACKETS-SEQ> ::= { <SEQUENCE> }
  6. <STATEMENT> ::= ε | ... | <IF-STAT>
  7. <ELSEPART> ::= ε | <BRACK-OR-STAT>
  8. ```
  9.  
  10. Οπότε ο κώδικας:
  11. ```
  12. if (4 <= 10)
  13. ```
  14. ο οποίος προκύπτει αν:
  15. ```
  16. <IF-STAT> ::= if ( <CONDITION> ) <BRACK-OR-STAT> <ELSEPART>
  17. <BRACK-OR-STAT> ::= <STATEMENT>
  18. <STATEMENT> ::= ε
  19. <ELSEPART> ::= ε
  20. ```
  21. είναι συντακτικά ορθός.
  22.  
  23. Επίσης ο κώδικας:
  24. ```
  25. if (4 <= 10)
  26. if (2 == 4)
  27. ```
  28. αντιστοιχεί στον εξής αντίστοιχο σε γλώσσα C:
  29.  
  30. ``` C
  31. if (4 <= 10)
  32. {
  33. if (2 == 4)
  34. {
  35. ;
  36. }
  37. }
  38. ```
  39.  
  40. και προκύπτει αν:
  41. ```
  42. <IF-STAT> ::= if ( <CONDITION> ) <BRACK-OR-STAT> <ELSEPART>
  43. <BRACK-OR-STAT> ::= <STATEMENT>
  44. <STATEMENT> ::= <IF-STAT>
  45. <ELSEPART> ::= ε
  46. ```
  47.  
  48. Μία απλή και γρήγορη λύση ακόμα και για όσους έχουν τελειώσει το πρώτο παραδοτέο,
  49. είναι να οριστεί ο κανόνας ```<COMPALSORY-STAT>``` που είναι ακριβώς ίδιος
  50. με τον κανόνα ```<STATEMENT>``` αλλά με τη διαφορά ότι αντί για ```ε``` θα υπάρχει
  51. ο τερματικός χαρακτήρας ```;```. Σχεδόν μόνο ένα copy-paste της συνάρτησης ```statement()```
  52. απαιτείται. Τέλος θα χρειαστεί να αλλάξει ο κανόνας ```<ΒRACK-OR-STAT>``` σε ```<ΒRACK-OR-COMP-STAT> ::= <BRACKETS-SEQ> | <COMPALSORY-STAT>``` μιας και όλοι οι κανόνες στους οποίους χρησιμοποιείται απαιτούν τουλάχιστον μία εντολή (if, else, while, select, do-while).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement