home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / programacao / pythonwin / python.exe / PYTHON23.CHM / ref / grammar.txt < prev    next >
Encoding:
Text File  |  2003-10-02  |  9.6 KB  |  439 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. test ::= 
  106.              and_test ( "or" and_test )*
  107.               | lambda_form
  108.   
  109. testlist ::= 
  110.              test ( "," test )* [ "," ]
  111.   
  112. list_display ::= 
  113.              "[" [listmaker] "]"
  114.   
  115. listmaker ::= 
  116.              expression ( list_for
  117.               | ( "," expression )* [","] )
  118.   
  119. list_iter ::= 
  120.              list_for | list_if
  121.   
  122. list_for ::= 
  123.              "for" expression_list "in" testlist
  124.               [list_iter]
  125.   
  126. list_if ::= 
  127.              "if" test [list_iter]
  128.  
  129. dict_display ::= 
  130.              "\{" [key_datum_list] "\}"
  131.   
  132. key_datum_list ::= 
  133.              key_datum ("," key_datum)* [","]
  134.   
  135. key_datum ::= 
  136.              expression ":" expression
  137.  
  138. string_conversion ::= 
  139.              "`" expression_list "`"
  140.  
  141. primary ::= 
  142.              atom | attributeref
  143.               | subscription | slicing | call
  144.  
  145. attributeref ::= 
  146.              primary "." identifier
  147.  
  148. subscription ::= 
  149.              primary "[" expression_list "]"
  150.  
  151. slicing ::= 
  152.              simple_slicing | extended_slicing
  153.   
  154. simple_slicing ::= 
  155.              primary "[" short_slice "]"
  156.   
  157. extended_slicing ::= 
  158.              primary "[" slice_list "]" 
  159.   
  160. slice_list ::= 
  161.              slice_item ("," slice_item)* [","]
  162.   
  163. slice_item ::= 
  164.              expression | proper_slice | ellipsis
  165.   
  166. proper_slice ::= 
  167.              short_slice | long_slice
  168.   
  169. short_slice ::= 
  170.              [lower_bound] ":" [upper_bound]
  171.   
  172. long_slice ::= 
  173.              short_slice ":" [stride]
  174.   
  175. lower_bound ::= 
  176.              expression
  177.   
  178. upper_bound ::= 
  179.              expression
  180.   
  181. stride ::= 
  182.              expression
  183.   
  184. ellipsis ::= 
  185.              "..."
  186.  
  187. call ::= 
  188.              primary "(" [argument_list [","]] ")"
  189.   
  190. argument_list ::= 
  191.              positional_arguments ["," keyword_arguments]
  192.                                      ["," "*" expression]
  193.                                      ["," "**" expression]
  194.                 | keyword_arguments ["," "*" expression]
  195.                                     ["," "**" expression]
  196.                 | "*" expression ["," "**" expression]
  197.                 | "**" expression
  198.   
  199. positional_arguments ::= 
  200.              expression ("," expression)*
  201.   
  202. keyword_arguments ::= 
  203.              keyword_item ("," keyword_item)*
  204.   
  205. keyword_item ::= 
  206.              identifier "=" expression
  207.  
  208. power ::= 
  209.              primary ["**" u_expr]
  210.  
  211. u_expr ::= 
  212.              power | "-" u_expr
  213.               | "+" u_expr | "\~" u_expr
  214.  
  215. m_expr ::= 
  216.              u_expr | m_expr "*" u_expr
  217.               | m_expr "//" u_expr
  218.               | m_expr "/" u_expr
  219.                 | m_expr "\%" u_expr
  220.   
  221. a_expr ::= 
  222.              m_expr | a_expr "+" m_expr
  223.               | a_expr "-" m_expr
  224.  
  225. shift_expr ::= 
  226.              a_expr
  227.               | shift_expr ( "<<" | ">>" ) a_expr
  228.  
  229. and_expr ::= 
  230.              shift_expr | and_expr "\;SPMamp;" shift_expr
  231.   
  232. xor_expr ::= 
  233.              and_expr | xor_expr "\textasciicircum" and_expr
  234.   
  235. or_expr ::= 
  236.              xor_expr | or_expr "|" xor_expr
  237.  
  238. comparison ::= 
  239.              or_expr ( comp_operator or_expr )*
  240.   
  241. comp_operator ::= 
  242.              "<" | ">" | "==" | ">=" | "<=" | "<>" | "!="
  243.                 | "is" ["not"] | ["not"] "in"
  244.  
  245. expression ::= 
  246.              or_test | lambda_form
  247.   
  248. or_test ::= 
  249.              and_test | or_test "or" and_test
  250.   
  251. and_test ::= 
  252.              not_test | and_test "and" not_test
  253.   
  254. not_test ::= 
  255.              comparison | "not" not_test
  256.   
  257. lambda_form ::= 
  258.              "lambda" [parameter_list]: expression
  259.  
  260. expression_list ::= 
  261.              expression ( "," expression )* [","]
  262.  
  263. simple_stmt ::= expression_stmt
  264.                 | assert_stmt
  265.                 | assignment_stmt
  266.                 | augmented_assignment_stmt
  267.                 | pass_stmt
  268.                 | del_stmt
  269.                 | print_stmt
  270.                 | return_stmt
  271.                 | yield_stmt
  272.                 | raise_stmt
  273.                 | break_stmt
  274.                 | continue_stmt
  275.                 | import_stmt
  276.                 | global_stmt
  277.                 | exec_stmt
  278.  
  279. expression_stmt ::= 
  280.              expression_list
  281.  
  282. assert_stmt ::= 
  283.              "assert" expression ["," expression]
  284.  
  285. assignment_stmt ::= 
  286.              (target_list "=")+ expression_list
  287.   
  288. target_list ::= 
  289.              target ("," target)* [","]
  290.   
  291. target ::= 
  292.              identifier
  293.                 | "(" target_list ")"
  294.                 | "[" target_list "]"
  295.                 | attributeref
  296.                 | subscription
  297.                 | slicing
  298.  
  299. augmented_assignment_stmt ::= 
  300.              target augop expression_list
  301.   
  302. augop ::= 
  303.              "+=" | "-=" | "*=" | "/=" | "\%=" | "**="
  304.                 | ">>=" | "<<=" | "\&=" | "\textasciicircum=" | "|="
  305.  
  306. pass_stmt ::= 
  307.              "pass"
  308.  
  309. del_stmt ::= 
  310.              "del" target_list
  311.  
  312. print_stmt ::= 
  313.              "print" ( \optionalexpression ("," expression)* \optional","
  314.                 | ">\code>" expression
  315.                   \optional("," expression)+ \optional"," )
  316.  
  317. return_stmt ::= 
  318.              "return" [expression_list]
  319.  
  320. yield_stmt ::= 
  321.              "yield" expression_list
  322.  
  323. raise_stmt ::= 
  324.              "raise" [expression ["," expression
  325.               ["," expression]]]
  326.  
  327. break_stmt ::= 
  328.              "break"
  329.  
  330. continue_stmt ::= 
  331.              "continue"
  332.  
  333. import_stmt ::= 
  334.              "import" module ["as" name]
  335.                 ( "," module ["as" name] )*
  336.                 | "from" module "import" identifier
  337.                     ["as" name]
  338.                   ( "," identifier ["as" name] )*
  339.                 | "from" module "import" "*"
  340.   
  341. module ::= 
  342.              (identifier ".")* identifier
  343.  
  344. global_stmt ::= 
  345.              "global" identifier ("," identifier)*
  346.  
  347. exec_stmt ::= 
  348.              "exec" expression
  349.               ["in" expression ["," expression]]
  350.  
  351. compound_stmt ::= 
  352.              if_stmt
  353.                 | while_stmt
  354.                 | for_stmt
  355.                 | try_stmt
  356.                 | funcdef
  357.                 | classdef
  358.   
  359. suite ::= 
  360.              stmt_list NEWLINE
  361.               | NEWLINE INDENT statement+ DEDENT
  362.   
  363. statement ::= 
  364.              stmt_list NEWLINE | compound_stmt
  365.   
  366. stmt_list ::= 
  367.              simple_stmt (";" simple_stmt)* [";"]
  368.  
  369. if_stmt ::= 
  370.              "if" expression ":" suite
  371.                 ( "elif" expression ":" suite )*
  372.                 ["else" ":" suite]
  373.  
  374. while_stmt ::= 
  375.              "while" expression ":" suite
  376.                 ["else" ":" suite]
  377.  
  378. for_stmt ::= 
  379.              "for" target_list "in" expression_list
  380.               ":" suite
  381.                 ["else" ":" suite]
  382.  
  383. try_stmt ::= 
  384.              try_exc_stmt | try_fin_stmt
  385.   
  386. try_exc_stmt ::= 
  387.              "try" ":" suite
  388.                 ("except" [expression
  389.                              ["," target]] ":" suite)+
  390.                 ["else" ":" suite]
  391.   
  392. try_fin_stmt ::= 
  393.              "try" ":" suite
  394.               "finally" ":" suite
  395.  
  396. funcdef ::= 
  397.              "def" funcname "(" [parameter_list] ")"
  398.               ":" suite
  399.   
  400. parameter_list ::= 
  401.              (defparameter ",")*
  402.                 ("*" identifier [, "**" identifier]
  403.                 | "**" identifier
  404.                   | defparameter [","])
  405.   
  406. defparameter ::= 
  407.              parameter ["=" expression]
  408.   
  409. sublist ::= 
  410.              parameter ("," parameter)* [","]
  411.   
  412. parameter ::= 
  413.              identifier | "(" sublist ")"
  414.   
  415. funcname ::= 
  416.              identifier
  417.  
  418. classdef ::= 
  419.              "class" classname [inheritance] ":"
  420.               suite
  421.   
  422. inheritance ::= 
  423.              "(" [expression_list] ")"
  424.   
  425. classname ::= 
  426.              identifier
  427.  
  428. file_input ::= 
  429.              (NEWLINE | statement)*
  430.  
  431. interactive_input ::= 
  432.              [stmt_list] NEWLINE | compound_stmt NEWLINE
  433.  
  434. eval_input ::= 
  435.              expression_list NEWLINE*
  436.  
  437. input_input ::= 
  438.              expression_list NEWLINE
  439.