有人可以帮我理解这意味着什么吗?
<stmt> := var <ident> = <expr>
| <ident> = <expr>
| for <ident> = <expr> to <expr> do <stmt> end
| read_int <ident>
| print <expr>
| <stmt> ; <stmt>
<expr> := <string>
| <int>
| <arith_expr>
| <ident>
<bin_expr> := <expr> <bin_op> <expr>
<bin_op> := + | - | * | /
<ident> := <char> <ident_rest>*
<ident_rest> := <char> | <digit>
<int> := <digit>+
<digit> := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<string> := " <string_elem>* "
<string_elem> := <any char other than ">
在第一部分中,我假设<ident>
表示“标识符”,<expr>
表示“表达式”,<arith_expr>
表示“算术表达式”。但其余的对我来说有点困惑。
谢谢
答案 0 :(得分:4)
也许应该提高你的Backus Naur Form - 阅读技巧。
答案 1 :(得分:2)
<stmt> = Statement
<expr> = Expression
<bin_expr> = Binary expression (Expression involving <bin_op>)
<bin_op> = Binary operator
<ident> = Identifier
<ident_rest> = Rest of identifier
<int> = Integer
<digit> = Digit
<string> = String
<string_elem> = String element
答案 2 :(得分:2)
<stmt> := var <ident> = <expr>
| <ident> = <expr>
| for <ident> = <expr> to <expr> do <stmt> end
| read_int <ident>
| print <expr>
| <stmt> ; <stmt>
翻译:声明可以是
<expr> := <string>
| <int>
| <arith_expr>
| <ident>
翻译:表达式可以是
<bin_expr> := <expr> <bin_op> <expr>
<bin_op> := + | - | * | /
二进制表达式由两个表达式和中间的二元运算符组成。二元运算符是:
+ - * /
<ident> := <char> <ident_rest>*
<ident_rest> := <char> | <digit>
标识符始终以字符开头,但标识符的其余部分可以包含字符和数字
<int> := <digit>+
<digit> := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
数字的定义
<string> := " <string_elem>* "
<string_elem> := <any char other than ">
字符串文字的定义