Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Σύμφωνα με τη γραμματική της Ciscal:
- ```
- <IF-STAT> ::= if ( <CONDITION> ) <BRACK-OR-STAT> <ELSEPART>
- <BRACK-OR-STAT> ::= <BRACKETS-SEQ> | <STATEMENT>
- <BRACKETS-SEQ> ::= { <SEQUENCE> }
- <STATEMENT> ::= ε | ... | <IF-STAT>
- <ELSEPART> ::= ε | <BRACK-OR-STAT>
- ```
- Οπότε ο κώδικας:
- ```
- if (4 <= 10)
- ```
- ο οποίος προκύπτει αν:
- ```
- <IF-STAT> ::= if ( <CONDITION> ) <BRACK-OR-STAT> <ELSEPART>
- <BRACK-OR-STAT> ::= <STATEMENT>
- <STATEMENT> ::= ε
- <ELSEPART> ::= ε
- ```
- είναι συντακτικά ορθός.
- Επίσης ο κώδικας:
- ```
- if (4 <= 10)
- if (2 == 4)
- ```
- αντιστοιχεί στον εξής αντίστοιχο σε γλώσσα C:
- ``` C
- if (4 <= 10)
- {
- if (2 == 4)
- {
- ;
- }
- }
- ```
- και προκύπτει αν:
- ```
- <IF-STAT> ::= if ( <CONDITION> ) <BRACK-OR-STAT> <ELSEPART>
- <BRACK-OR-STAT> ::= <STATEMENT>
- <STATEMENT> ::= <IF-STAT>
- <ELSEPART> ::= ε
- ```
- Μία απλή και γρήγορη λύση ακόμα και για όσους έχουν τελειώσει το πρώτο παραδοτέο,
- είναι να οριστεί ο κανόνας ```<COMPALSORY-STAT>``` που είναι ακριβώς ίδιος
- με τον κανόνα ```<STATEMENT>``` αλλά με τη διαφορά ότι αντί για ```ε``` θα υπάρχει
- ο τερματικός χαρακτήρας ```;```. Σχεδόν μόνο ένα copy-paste της συνάρτησης ```statement()```
- απαιτείται. Τέλος θα χρειαστεί να αλλάξει ο κανόνας ```<Β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