السلام عليكم
عندي مشروع عشان ابداه لازم يكون عندي قرامر بايثون بسيط ولازم يكون BNF
بحثت بالانترنت لكن لم اجد الا EBNF
اريد قرامر يغطي فقط على سبيل المثال while,if , normal variable not complicated
يكون بسيط ,,,رجاء مساعده منكم ياخبراء البايثون
لاي ياخ طارق بالفعل أجل !!
ةوانت ياخ sdn
ساعدني بما انو سهل عندك ,,,,
هذا القرامر اللي اخترته وحاولت اعدله ,,ومثل ماذكرت انا ابيه bnf ,,,,,, هل تحويلي صح ام خطأ ؟؟؟؟؟ اذا خطأ فاليت تصححه لي
هاذي هي قرامر EBNF
identifier ::= (letter|"_") (letter | digit | "_")*
letter ::= lowercase | uppercase
lowercase ::= "a"..."z"
uppercase ::= "A"..."Z"
digit ::= "0"..."9
compound_stmt ::= if_stmt
| while_stmt
for_stmt ::=
"for" target_list "in" expression_list
":" suite
["else" ":" suite]
while_stmt ::= "while" expression ":" suite ["else" ":" suite]
suite ::= stmt_list NEWLINE
stmt_list ::= simple_stmt (";" simple_stmt)* [";"]
simple_stmt ::= expression_stmt
expression_stmt ::= expression_list
expression_list ::= expression ( "," expression )* [","]
expression ::= conditional_expression
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
comparison ::= or_expr ( comp_operator or_expr )*
comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "<>" | "!="
| "is" ["not"] | ["not"] "in"
or_expr ::= xor_expr | or_expr "|" xor_expr
xor_expr ::= and_expr | xor_expr "^" and_expr
and_expr ::= "&" | and_exprوتحويلي لـ BNF هـــو:
identifier ::=letterletter| letterdigit| letter"_"| "_"letter | "_"digit | "_""_"
letter ::= lowercase | uppercase
lowercase ::= "a"..."z"
uppercase ::= "A"..."Z"
digit ::= "0"..."9
compound_stmt ::= if_stmt
| while_stmt
if_stmt ::= "if" expression ":" suite"elif" expression ":" suite
if_stmt|"else" ":" suite
while_stmt ::= "while" expression ":" suite "else" ":" suite
|"while" expression ":" suite
suite ::= stmt_list NEWLINE
stmt_list ::= simple_stmt ";" simple_stmt stmt_list|";"
simple_stmt ::= expression_stmt
expression_stmt ::= expression_list
expression_list ::= expression "," expression expression_list| ","
expression ::= conditional_expression
conditional_expression ::= or_test "if" or_test "else" expression
|or_test
or_test ::= and_test | or_test "or" and_test
and_test ::= not_test | and_test "and" not_test
not_test ::= comparison | "not" not_test
comparison ::= or_expr comp_operator or_expr
comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "<>" | "!="
| "is" ["not"] | ["not"] "in"
or_expr ::= xor_expr | or_expr "|" xor_expr
xor_expr ::= and_expr | xor_expr "^" and_expr
and_expr ::= "&" | and_expr
