Advertisement
deadlykingdx

BNF

Jun 28th, 2020
405
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1.  
  2. DELETE THIS --expr = | NUMBER | string | 'None' | 'True' | 'False'
  3.  
  4. stuff ::=
  5. stmt NEWLINE
  6. | NEWLINE INDENT statement+ DEDENT
  7.  
  8. statement ::=
  9. stmt NEWLINE
  10.  
  11. stmt ::= if_stmt | for_stmt | print_stmt | assignment_stmt
  12.  
  13. import_stmt ::= "import" module ["as" module_name] | "from" module "import" module ["as" module_name]
  14.  
  15. module ::= identifier
  16.  
  17. module_name ::= identifier
  18.  
  19. expression ::= comparison
  20. if_stmt ::=
  21. "if" expression ":" stuff
  22. ( "elif" expression ":" stuff )*
  23. ["else" ":" stuff]
  24.  
  25. for_stmt ::=
  26. "for" target_list "in" expression_list
  27. ":" stuff
  28. ["else" ":" stuff]
  29.  
  30. print_stmt ::= "print(" string ")"
  31.  
  32. comp_op ::= "in"|"not" "in"|"is"|"is" "not"|"<"|">"|"=="|">="|"<="|"!="
  33.  
  34. comparison ::= expr (comp_op expr)*
  35.  
  36. varname ::= identifier
  37.  
  38. funcname ::=
  39. identifier
  40.  
  41. classdef ::=
  42. "class" classname ":"
  43. stuff
  44.  
  45. classname ::=
  46. identifier
  47.  
  48. funcdef ::=
  49. "def" funcname "(" [parameter_list] ")"
  50. ":" stuff
  51.  
  52.  
  53. parameter_list ::=
  54. (parameter ",")*
  55.  
  56. parameter ::=
  57. identifier
  58.  
  59.  
  60. assignment_stmt ::= identifier "=" (identifier | number | string)
  61.  
  62. identifier ::=
  63. (letter|"_") (letter | digit | "_")*
  64.  
  65. string ::= "'" alphanumeric "'" | '"' alphanumeric '"'
  66.  
  67. alphanumeric ::= (letter | digit)+
  68.  
  69. letter ::=
  70. lowercase | uppercase
  71.  
  72.  
  73. lowercase ::=
  74. "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"
  75.  
  76. uppercase ::=
  77. "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"
  78.  
  79. digit ::=
  80. "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement