我只需要帮助阅读这个EBNF语法,我是新手,并不是特别理解第一个,我理解第二个,但只是不明白它与第一个如何联系。
Term :: = Primary {(T_STAR | T_SLASH)Term}
主要:: = T_ICONST | T_SCONST | T_ID | T_LPAREN Expr T_RPAREN
答案 0 :(得分:-1)
在EBNF中,由卷曲括号括起的表达式可以省略或重复更多时间 所以我们可以根据这个EBNF构造一些代码(假设T_STAR代表字符“*”而T_SLASH代表“/”)
// Term ::= Primary { (T_STAR|T_SLASH) Term }
// Primary ::= T_ICONST | T_SCONST | T_ID | T_LPAREN Expr T_RPAREN
Term ::= Primary * Term
Term ::= Primary * Primary / Term
Term ::= Primary * Primary / Primary
Term ::= ThisIsT_ID * ThisIsT_ID / ThisIsT_ID