boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Military版 - 大哥语法都是这么定义的
相关主题
Facebook真恶
关于先锋PH4CV, 我找到两个资料,有兴趣的不妨看看
美国逐渐衰败的原因
印度人评论中国:中和东盟贸易超4千亿美元,美国处下风
印度网友评中巴关系牢不可破
小弟一計可解各航空公司之台灣名問題
Sp2018是我的另外一个ID
老公和婆婆相继去世 女子被公公照顾 产生爱情
从2002年到2007年,每年回国的美国理工博士不到40人,你信吗?
相关话题的讨论汇总
话题: expression话题: stmt话题: expr话题: list话题: identifier
进入Military版参与讨论
1 (共1页)
c*******a
发帖数: 1879
1
Grammar
atom ::=
identifier | literal | enclosure

enclosure ::=
parenth_form | list_display
| generator_expression | dict_display
| string_conversion | yield_atom
literal ::=
stringliteral | integer | longinteger
| floatnumber | imagnumber
stringliteral ::=
stringliteralpiece
| stringliteral stringliteralpiece
parenth_form ::=
"(" [expression_list] ")"
list_display ::=
"[" [expression_list | list_comprehension] "]"

list_comprehension ::=
expression list_for

list_for ::=
"for" target_list "in" old_expression_list
[list_iter]

old_expression_list ::=
old_expression
[("," old_expression)+ [","]]

list_iter ::=
list_for | list_if

list_if ::=
"if" old_expression [list_iter]
generator_expression ::=
"(" expression genexpr_for ")"

genexpr_for ::=
"for" target_list "in" or_test
[genexpr_iter]

genexpr_iter ::=
genexpr_for | genexpr_if

genexpr_if ::=
"if" old_expression [genexpr_iter]
dict_display ::=
"{" [key_datum_list] "}"

key_datum_list ::=
key_datum ("," key_datum)* [","]

key_datum ::=
expression ":" expression
string_conversion ::=
"`" expression_list "`"
yield_atom ::=
"(" yield_expression ")"

yield_expression ::=
"yield" [expression_list]
primary ::=
atom | attributeref
| subscription | slicing | call
attributeref ::=
primary "." identifier
subscription ::=
primary "[" expression_list "]"
slicing ::=
simple_slicing | extended_slicing

simple_slicing ::=
primary "[" short_slice "]"

extended_slicing ::=
primary "[" slice_list "]"

slice_list ::=
slice_item ("," slice_item)* [","]

slice_item ::=
expression | proper_slice | ellipsis

proper_slice ::=
short_slice | long_slice

short_slice ::=
[lower_bound] ":" [upper_bound]

long_slice ::=
short_slice ":" [stride]

lower_bound ::=
expression

upper_bound ::=
expression

stride ::=
expression

ellipsis ::=
"..."
call ::=
primary "(" [argument_list [","]
| expression genexpr_for] ")"

argument_list ::=
positional_arguments ["," keyword_arguments]
["," "*" expression]
["," "**" expression]
| keyword_arguments ["," "*" expression]
["," "**" expression]
| "*" expression ["," "**" expression]
| "**" expression

positional_arguments ::=
expression ("," expression)*

keyword_arguments ::=
keyword_item ("," keyword_item)*

keyword_item ::=
identifier "=" expression
power ::=
primary ["**" u_expr]
u_expr ::=
power | "-" u_expr
| "+" u_expr | "~" u_expr
m_expr ::=
u_expr | m_expr "*" u_expr
| m_expr "//" u_expr
| m_expr "/" u_expr
| m_expr "%" u_expr

a_expr ::=
m_expr | a_expr "+" m_expr
| a_expr "-" m_expr
shift_expr ::=
a_expr
| shift_expr ( "<<" | ">>" ) a_expr
and_expr ::=
shift_expr | and_expr "&" shift_expr

xor_expr ::=
and_expr | xor_expr "^" and_expr

or_expr ::=
xor_expr | or_expr "|" xor_expr
comparison ::=
or_expr ( comp_operator or_expr )*

comp_operator ::=
"<" | ">" | "==" | ">=" | "<=" | "<>" | "!="
| "is" ["not"] | ["not"] "in"
expression ::=
conditional_expression | lambda_form

old_expression ::=
or_test | old_lambda_form

conditional_expression ::=
or_test ["if" or_test "else" expression]

or_test ::=
and_test | or_test "or" and_test

and_test ::=
not_test | and_test "and" not_test

not_test ::=
comparison | "not" not_test
lambda_form ::=
"lambda" [parameter_list] ":" expression

old_lambda_form ::=
"lambda" [parameter_list] ":" old_expression
expression_list ::=
expression ( "," expression )* [","]
simple_stmt ::= expression_stmt
| assert_stmt
| assignment_stmt
| augmented_assignment_stmt
| pass_stmt
| del_stmt
| print_stmt
| return_stmt
| yield_stmt
| raise_stmt
| break_stmt
| continue_stmt
| import_stmt
| global_stmt
| exec_stmt
expression_stmt ::=
expression_list
assert_stmt ::=
"assert" expression ["," expression]
assignment_stmt ::=
(target_list "=")+
(expression_list | yield_expression)

target_list ::=
target ("," target)* [","]

target ::=
identifier
| "(" target_list ")"
| "[" target_list "]"
| attributeref
| subscription
| slicing
augmented_assignment_stmt ::=
target augop
(expression_list | yield_expression)

augop ::=
"+=" | "-=" | "*=" | "/=" | "//=" | "%=" | "**="
| ">>=" | "<<=" | "&=" | "^=" | "|="
pass_stmt ::=
"pass"
del_stmt ::=
"del" target_list
print_stmt ::=
"print" ( [expression ("," expression)* [","]]
| ">>" expression [("," expression)+ [","]] )
return_stmt ::=
"return" [expression_list]
yield_stmt ::=
yield_expression
raise_stmt ::=
"raise" [expression ["," expression
["," expression]]]
break_stmt ::=
"break"
continue_stmt ::=
"continue"
import_stmt ::=
"import" module ["as" name]
( "," module ["as" name] )*
| "from" relative_module "import" identifier
["as" name]
( "," identifier ["as" name] )*
| "from" relative_module "import" "("
identifier ["as" name]
( "," identifier ["as" name] )* [","] ")"
| "from" module "import" "*"

module ::=
(identifier ".")* identifier

relative_module ::=
"."* module | "."+

name ::=
identifier
global_stmt ::=
"global" identifier ("," identifier)*
exec_stmt ::=
"exec" or_expr
["in" expression ["," expression]]
compound_stmt ::=
if_stmt
| while_stmt
| for_stmt
| try_stmt
| with_stmt
| funcdef
| classdef

suite ::=
stmt_list NEWLINE
| NEWLINE INDENT statement+ DEDENT

statement ::=
stmt_list NEWLINE | compound_stmt

stmt_list ::=
simple_stmt (";" simple_stmt)* [";"]
if_stmt ::=
"if" expression ":" suite
( "elif" expression ":" suite )*
["else" ":" suite]
while_stmt ::=
"while" expression ":" suite
["else" ":" suite]
for_stmt ::=
"for" target_list "in" expression_list
":" suite
["else" ":" suite]
try_stmt ::= try1_stmt | try2_stmt

try1_stmt ::=
"try" ":" suite
("except" [expression
["," target]] ":" suite)+
["else" ":" suite]
["finally" ":" suite]

try2_stmt ::=
"try" ":" suite
"finally" ":" suite
with_stmt ::=
"with" expression ["as" target] ":" suite
funcdef ::=
[decorators] "def" funcname "(" [parameter_list] ")"
":" suite

decorators ::=
decorator+

decorator ::=
"@" dotted_name ["(" [argument_list [","]] ")"] NEWLINE

dotted_name ::=
identifier ("." identifier)*

parameter_list ::=
(defparameter ",")*
("*" identifier [, "**" identifier]
| "**" identifier
| defparameter [","] )

defparameter ::=
parameter ["=" expression]

sublist ::=
parameter ("," parameter)* [","]

parameter ::=
identifier | "(" sublist ")"

funcname ::=
identifier
classdef ::=
"class" classname [inheritance] ":"
suite

inheritance ::=
"(" [expression_list] ")"

classname ::=
identifier
file_input ::=
(NEWLINE | statement)*
interactive_input ::=
[stmt_list] NEWLINE | compound_stmt NEWLINE
eval_input ::=
expression_list NEWLINE*
input_input ::=
expression_list NEWLINE
e****w
发帖数: 1565
2
......
大哥语法都是这么定义的
楼上更蠢。。。以为python就不可以有compiler
1 (共1页)
进入Military版参与讨论
相关主题
从2002年到2007年,每年回国的美国理工博士不到40人,你信吗?
我对领馆这事有个建议--以后全用国产品牌车
索罗斯就是NED最大个人金主
Google Group Members to Use Facial Recognition to Identify London Rioters
China vs USA
父母是白人,领养的亚洲小孩算白人还是黄人?
调查星条国民3.4% 是LGBT同性恋,变性和双性
Re: 上海:农民工工资被风吹散 遭路人哄抢 (转载)
这个真是美女教授了吧? (转载)
美企报告声称上海一建筑系解放军黑客总部???
相关话题的讨论汇总
话题: expression话题: stmt话题: expr话题: list话题: identifier