Guest User

Untitled

a guest
Oct 26th, 2017
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
BNF 1.94 KB | None | 0 0
  1. (*PART A*)
  2. begin  end
  3. case <stmt> endcase
  4. case <some_variable> of: <line> endcase
  5.  case <some_variable> of: <line> endcase
  6.  case <some_variable> of: {<string> (,|_)}* : {<one-statement>(;|_)} ; [<end>] endcase
  7. case <some_variable> of: {<string> (,|_)}* : {<one-statement>(;|_)} ; else [{<one-statement>(;|_)};] endcase
  8.  
  9. <stmt>          ::= <String-Case>
  10. <String-Case>   ::= case <some_variable> of: <line>
  11. <line>          ::=     {<string> (,|_)}* : {<one-statement>(;|_)} ; [<end>]
  12.                 | <line> ,{<string> (,|_)}* : {<one-statement>(;|_)} ; [<end>]
  13.  
  14. <end>           ::= [<end>] endcase |
  15.                 else [{<one-statement>(;|_)};] endcase
  16.                    
  17. (* define variables , strings, and digits*)
  18. <string>        ::= ""({<letter>|<digit>})
  19. <letter>            ::= "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" | "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" ;
  20. <digit>             ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
  21.  (* <some_variable> and <one-statement> defined //somewhere else *)
  22.  
  23. (*PART B*)
  24. begin String-Case end
  25. begin
  26. String-Case = "case" some_variable "of:" line+  ;
  27. line        =   {string ,(","|"_")} : {one-statement,(";"|"_")} ";" ?end? ;
  28. end     =  endcase |
  29.             "else" [{<one-statement>(";"|"_")}";"] endcase
  30.                
  31. (* define variables , strings, and digits*)            
  32. string      = "",({letter|digit})
  33. letter      = "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" | "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" ;
  34. digit       = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
  35. (c)
  36.  
  37.  <S> => "case" <some_variable> "of:" <line>
Add Comment
Please, Sign In to add comment