我已经看到了语法和语义之间差异的解释,例如What is the difference between syntax and semantics? 但是当我们讨论编译器时,“语法”和“语法”之间有什么区别吗?
答案 0 :(得分:1)
语法是一系列产生有效的"字"一种语言这是一种指定语言语法的方法。指定语法的另一种方法是使用简单的英语,但如果你希望它足够精确以作为规范,那么对于非平凡的语言来说这将是非常冗长的。
作为示例,请考虑以下文本:
程序是一系列零个或多个语句。
语句是关键字" var",后跟标识符,后跟分号;标识符后跟" ++"或者" - ",然后是分号;或关键字" while",后跟一个标识符,后跟关键字" do",后跟零个或多个语句,后跟关键字" end"。
这描述了一种非常简单的编程语言的语法,但它不是语法。这是一个描述相同语言的语法:
program ::= statement*
statement ::= "var" ID ";"
| ID "++" ";"
| ID "--" ";"
| "while" ID "do" statement* "end"