登录
首页 >  Golang >  Go问答

需要一个关于赋值运算符的 Go 语法如何使用使用 EBNF 指定的语法规则的示例

来源:stackoverflow

时间:2024-03-17 17:54:26 113浏览 收藏

Go 语法由扩展巴科斯范式 (EBNF) 定义。EBNF 使用产生式规则描述语法结构。每个产生式规则由一个名称、一个等号和一个表达式组成。表达式由多个备选方案组成,备选方案由项组成。项可以是产生式名称、标记或组、选项或重复。 使用这些规则,可以解析表达式 i++。IncDecStmt 产生式规则适用于此表达式,其中 production_name 为 IncDecStmt,term 为 "++"。因此,i++ 等价于 IncDecStmt(i, "++")。

问题内容

正如文档中提到的,go 中的语法是使用扩展巴科斯-诺尔范式 (ebnf) 指定的:

Production  = production_name "=" [ Expression ] "." .
Expression  = Alternative { "|" Alternative } .
Alternative = Term { Term } .
Term        = production_name | token [ "…" token ] | Group | Option | Repetition .
Group       = "(" Expression ")" .
Option      = "[" Expression "]" .
Repetition  = "{" Expression "}" .

我试图理解 go 语法是如何定义的,如何使用这些语法规则来分解/推导/理解表达式 i++i+=1 。为了说明的目的,如何逐步替换这些产生式规则?


解决方案


表达式 i++ 使用 IncDec statements 的语法规则:

IncDecStmt = Expression ( "++" | "--" ) .

此处, production_name 将为 incdecstmtterm 将为 "++""--"

以上就是《需要一个关于赋值运算符的 Go 语法如何使用使用 EBNF 指定的语法规则的示例》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>