home *** CD-ROM | disk | FTP | other *** search
/ Freelog 33 / Freelog033.iso / Progr / Python-2.2.1.exe / GRAMMAR.TXT < prev    next >
Encoding:
Text File  |  2002-04-09  |  9.8 KB  |  430 lines

  1.  
  2. identifier ::= 
  3.              (letter|"_") (letter | digit | "_")*
  4.   
  5. letter ::= 
  6.              lowercase | uppercase
  7.   
  8. lowercase ::= 
  9.              "a"..."z"
  10.   
  11. uppercase ::= 
  12.              "A"..."Z"
  13.   
  14. digit ::= 
  15.              "0"..."9"
  16.  
  17. stringliteral ::= 
  18.              [stringprefix](shortstring | longstring)
  19.   
  20. stringprefix ::= 
  21.              "r" | "u" | "ur" | "R" | "U" | "UR" | "Ur" | "uR"
  22.   
  23. shortstring ::= 
  24.              "'" shortstringitem* "'"
  25.               | '"' shortstringitem* '"'
  26.   
  27. longstring ::= 
  28.              "'''" longstringitem* "'''"
  29.                 | '"""' longstringitem* '"""'
  30.   
  31. shortstringitem ::= 
  32.              shortstringchar | escapeseq
  33.   
  34. longstringitem ::= 
  35.              longstringchar | escapeseq
  36.   
  37. shortstringchar ::= 
  38.              <any ASCII character except "\" or newline or the quote>
  39.   
  40. longstringchar ::= 
  41.              <any ASCII character except "\">
  42.   
  43. escapeseq ::= 
  44.              "\" <any ASCII character>
  45.  
  46. longinteger ::= 
  47.              integer ("l" | "L")
  48.   
  49. integer ::= 
  50.              decimalinteger | octinteger | hexinteger
  51.   
  52. decimalinteger ::= 
  53.              nonzerodigit digit* | "0"
  54.   
  55. octinteger ::= 
  56.              "0" octdigit+
  57.   
  58. hexinteger ::= 
  59.              "0" ("x" | "X") hexdigit+
  60.   
  61. nonzerodigit ::= 
  62.              "1"..."9"
  63.   
  64. octdigit ::= 
  65.              "0"..."7"
  66.   
  67. hexdigit ::= 
  68.              digit | "a"..."f" | "A"..."F"
  69.  
  70. floatnumber ::= 
  71.              pointfloat | exponentfloat
  72.   
  73. pointfloat ::= 
  74.              [intpart] fraction | intpart "."
  75.   
  76. exponentfloat ::= 
  77.              (intpart | pointfloat)
  78.               exponent
  79.   
  80. intpart ::= 
  81.              digit+
  82.   
  83. fraction ::= 
  84.              "." digit+
  85.   
  86. exponent ::= 
  87.              ("e" | "E") ["+" | "-"] digit+
  88.  
  89. imagnumber ::= (floatnumber | intpart) ("j" | "J")
  90.  
  91. atom ::= 
  92.              identifier | literal | enclosure
  93.   
  94. enclosure ::= 
  95.              parenth_form | list_display
  96.                 | dict_display | string_conversion
  97.  
  98. literal ::= 
  99.              stringliteral | integer | longinteger
  100.                 | floatnumber | imagnumber
  101.  
  102. parenth_form ::= 
  103.              "(" [expression_list] ")"
  104.  
  105. list_display ::= 
  106.              "[" [listmaker] "]"
  107.   
  108. listmaker ::= 
  109.              expression ( list_for
  110.               | ( "," expression)* [","] )
  111.   
  112. list_iter ::= 
  113.              list_for | list_if
  114.   
  115. list_for ::= 
  116.              "for" expression_list "in" testlist
  117.               [list_iter]
  118.   
  119. list_if ::= 
  120.              "if" test [list_iter]
  121.  
  122. dict_display ::= 
  123.              "\{" [key_datum_list] "\}"
  124.   
  125. key_datum_list ::= 
  126.              key_datum ("," key_datum)* [","]
  127.   
  128. key_datum ::= 
  129.              expression ":" expression
  130.  
  131. string_conversion ::= 
  132.              "`" expression_list "`"
  133.  
  134. primary ::= 
  135.              atom | attributeref
  136.               | subscription | slicing | call
  137.  
  138. attributeref ::= 
  139.              primary "." identifier
  140.  
  141. subscription ::= 
  142.              primary "[" expression_list "]"
  143.  
  144. slicing ::= 
  145.              simple_slicing | extended_slicing
  146.   
  147. simple_slicing ::= 
  148.              primary "[" short_slice "]"
  149.   
  150. extended_slicing ::= 
  151.              primary "[" slice_list "]" 
  152.   
  153. slice_list ::= 
  154.              slice_item ("," slice_item)* [","]
  155.   
  156. slice_item ::= 
  157.              expression | proper_slice | ellipsis
  158.   
  159. proper_slice ::= 
  160.              short_slice | long_slice
  161.   
  162. short_slice ::= 
  163.              [lower_bound] ":" [upper_bound]
  164.   
  165. long_slice ::= 
  166.              short_slice ":" [stride]
  167.   
  168. lower_bound ::= 
  169.              expression
  170.   
  171. upper_bound ::= 
  172.              expression
  173.   
  174. stride ::= 
  175.              expression
  176.   
  177. ellipsis ::= 
  178.              "..."
  179.  
  180. call ::= 
  181.              primary "(" [argument_list [","]] ")"
  182.   
  183. argument_list ::= 
  184.              positional_arguments ["," keyword_arguments
  185.                    ["," "*" expression ["," "**" expression]]]
  186.                 | keyword_arguments ["," "*" expression
  187.                                              ["," "**" expression]]
  188.                 | "*" expression ["," "**" expression]
  189.                 | "**" expression
  190.   
  191. positional_arguments ::= 
  192.              expression ("," expression)*
  193.   
  194. keyword_arguments ::= 
  195.              keyword_item ("," keyword_item)*
  196.   
  197. keyword_item ::= 
  198.              identifier "=" expression
  199.  
  200. power ::= 
  201.              primary ["**" u_expr]
  202.  
  203. u_expr ::= 
  204.              power | "-" u_expr
  205.               | "+" u_expr | "\~" u_expr
  206.  
  207. m_expr ::= 
  208.              u_expr | m_expr "*" u_expr
  209.               | m_expr "/" u_expr
  210.                 | m_expr "\%" u_expr
  211.   
  212. a_expr ::= 
  213.              m_expr | aexpr "+" m_expr
  214.               aexpr "-" m_expr
  215.  
  216. shift_expr ::= 
  217.              a_expr
  218.               | shift_expr ( "<<" | ">>" ) a_expr
  219.  
  220. and_expr ::= 
  221.              shift_expr | and_expr "\;SPMamp;" shift_expr
  222.   
  223. xor_expr ::= 
  224.              and_expr | xor_expr "\textasciicircum" and_expr
  225.   
  226. or_expr ::= 
  227.              xor_expr | or_expr "|" xor_expr
  228.  
  229. comparison ::= 
  230.              or_expr ( comp_operator or_expr )*
  231.   
  232. comp_operator ::= 
  233.              "<" | ">" | "==" | ">=" | "<=" | "<>" | "!="
  234.                 | "is" ["not"] | ["not"] "in"
  235.  
  236. expression ::= 
  237.              or_test | lambda_form
  238.   
  239. or_test ::= 
  240.              and_test | or_test "or" and_test
  241.   
  242. and_test ::= 
  243.              not_test | and_test "and" not_test
  244.   
  245. not_test ::= 
  246.              comparison | "not" not_test
  247.   
  248. lambda_form ::= 
  249.              "lambda" [parameter_list]: expression
  250.  
  251. expression_list ::= 
  252.              expression ( "," expression )* [","]
  253.  
  254. simple_stmt ::= expression_stmt
  255.                 | assert_stmt
  256.                 | assignment_stmt
  257.                 | augmented_assignment_stmt
  258.                 | pass_stmt
  259.                 | del_stmt
  260.                 | print_stmt
  261.                 | return_stmt
  262.                 | yield_stmt
  263.                 | raise_stmt
  264.                 | break_stmt
  265.                 | continue_stmt
  266.                 | import_stmt
  267.                 | global_stmt
  268.                 | exec_stmt
  269.  
  270. expression_stmt ::= 
  271.              expression_list
  272.  
  273. assert_statement ::= 
  274.              "assert" expression ["," expression]
  275.  
  276. assignment_stmt ::= 
  277.              (target_list "=")+ expression_list
  278.   
  279. target_list ::= 
  280.              target ("," target)* [","]
  281.   
  282. target ::= 
  283.              identifier
  284.                 | "(" target_list ")"
  285.                 | "[" target_list "]"
  286.                 | attributeref
  287.                 | subscription
  288.                 | slicing
  289.  
  290. augmented_assignment_stmt ::= 
  291.              target augop expression_list
  292.   
  293. augop ::= 
  294.              "+=" | "-=" | "*=" | "/=" | "\%=" | "**="
  295.                 | ">>=" | "<<=" | "\&=" | "\textasciicircum=" | "|="
  296.  
  297. pass_stmt ::= 
  298.              "pass"
  299.  
  300. del_stmt ::= 
  301.              "del" target_list
  302.  
  303. print_stmt ::= 
  304.              "print" ( \optionalexpression ("," expression)* \optional","
  305.                 | ">\code>" expression
  306.                   \optional("," expression)+ \optional"," )
  307.  
  308. return_stmt ::= 
  309.              "return" [expression_list]
  310.  
  311. yield_stmt ::= 
  312.              "yield" expression_list
  313.  
  314. raise_stmt ::= 
  315.              "raise" [expression ["," expression
  316.               ["," expression]]]
  317.  
  318. break_stmt ::= 
  319.              "break"
  320.  
  321. continue_stmt ::= 
  322.              "continue"
  323.  
  324. import_stmt ::= 
  325.              "import" module ["as" name]
  326.                 ( "," module ["as" name] )*
  327.                 | "from" module "import" identifier
  328.                     ["as" name]
  329.                   ( "," identifier ["as" name] )*
  330.                 | "from" module "import" "*"
  331.   
  332. module ::= 
  333.              (identifier ".")* identifier
  334.  
  335. global_stmt ::= 
  336.              "global" identifier ("," identifier)*
  337.  
  338. exec_stmt ::= 
  339.              "exec" expression
  340.               ["in" expression ["," expression]]
  341.  
  342. compound_stmt ::= 
  343.              if_stmt
  344.                 | while_stmt
  345.                 | for_stmt
  346.                 | try_stmt
  347.                 | funcdef
  348.                 | classdef
  349.   
  350. suite ::= 
  351.              stmt_list NEWLINE
  352.               | NEWLINE INDENT statement+ DEDENT
  353.   
  354. statement ::= 
  355.              stmt_list NEWLINE | compound_stmt
  356.   
  357. stmt_list ::= 
  358.              simple_stmt (";" simple_stmt)* [";"]
  359.  
  360. if_stmt ::= 
  361.              "if" expression ":" suite
  362.                 ( "elif" expression ":" suite )*
  363.                 ["else" ":" suite]
  364.  
  365. while_stmt ::= 
  366.              "while" expression ":" suite
  367.                 ["else" ":" suite]
  368.  
  369. for_stmt ::= 
  370.              "for" target_list "in" expression_list
  371.               ":" suite
  372.                 ["else" ":" suite]
  373.  
  374. try_stmt ::= 
  375.              try_exc_stmt | try_fin_stmt
  376.   
  377. try_exc_stmt ::= 
  378.              "try" ":" suite
  379.                 ("except" [expression
  380.                              ["," target]] ":" suite)+
  381.                 ["else" ":" suite]
  382.   
  383. try_fin_stmt ::= 
  384.              "try" ":" suite
  385.               "finally" ":" suite
  386.  
  387. funcdef ::= 
  388.              "def" funcname "(" [parameter_list] ")"
  389.               ":" suite
  390.   
  391. parameter_list ::= 
  392.              (defparameter ",")*
  393.                 ("*" identifier [, "**" identifier]
  394.                 | "**" identifier
  395.                   | defparameter [","])
  396.   
  397. defparameter ::= 
  398.              parameter ["=" expression]
  399.   
  400. sublist ::= 
  401.              parameter ("," parameter)* [","]
  402.   
  403. parameter ::= 
  404.              identifier | "(" sublist ")"
  405.   
  406. funcname ::= 
  407.              identifier
  408.  
  409. classdef ::= 
  410.              "class" classname [inheritance] ":"
  411.               suite
  412.   
  413. inheritance ::= 
  414.              "(" [expression_list] ")"
  415.   
  416. classname ::= 
  417.              identifier
  418.  
  419. file_input ::= 
  420.              (NEWLINE | statement)*
  421.  
  422. interactive_input ::= 
  423.              [stmt_list] NEWLINE | compound_stmt NEWLINE
  424.  
  425. eval_input ::= 
  426.              expression_list NEWLINE*
  427.  
  428. input_input ::= 
  429.              expression_list NEWLINE
  430.