编译器中的“语法”和“语法”有啥区别?
Posted
技术标签:
【中文标题】编译器中的“语法”和“语法”有啥区别?【英文标题】:What is the difference between "syntax" and "grammar" in compiler?编译器中的“语法”和“语法”有什么区别? 【发布时间】:2015-12-09 19:05:51 【问题描述】:我已经看过语法和语义区别的解释了,比如这个What is the difference between syntax and semantics? 但是当我们讨论编译器时,“语法”和“语法”有什么区别吗?
【问题讨论】:
不,它们是同一事物的两个词。 【参考方案1】:语法是一系列产生一种语言的有效“词”的产生式。这是一种指定语言语法的方法。指定语法的另一种方法是使用简单的英语,但如果您希望它足够精确以用作规范,那么对于非平凡的语言来说最终会非常冗长。
例如,考虑以下文本:
程序是一系列零个或多个语句。
语句要么是关键字“var”,后跟一个标识符,然后是一个分号;标识符后跟“++”或“--”,后跟分号;或关键字“while”,后跟一个标识符,然后是关键字“do”,然后是零个或多个语句,然后是关键字“end”。
这描述了一种非常简单的编程语言的语法,但它不是语法。这是描述相同语言的语法:
program ::= statement*
statement ::= "var" ID ";"
| ID "++" ";"
| ID "--" ";"
| "while" ID "do" statement* "end"
【讨论】:
以上是关于编译器中的“语法”和“语法”有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章