编译器中“语法”和“语法”有什么区别?

时间:2015-09-13 19:21:43

标签: syntax compiler-construction programming-languages grammar

我已经看到了语法和语义之间差异的解释,例如What is the difference between syntax and semantics? 但是当我们讨论编译器时,“语法”和“语法”之间有什么区别吗?

1 个答案:

答案 0 :(得分:1)

语法是一系列产生有效的"字"一种语言这是一种指定语言语法的方法。指定语法的另一种方法是使用简单的英语,但如果你希望它足够精确以作为规范,那么对于非平凡的语言来说这将是非常冗长的。

作为示例,请考虑以下文本:

  

程序是一系列零个或多个语句。

     

语句是关键字" var",后跟标识符,后跟分号;标识符后跟" ++"或者" - ",然后是分号;或关键字" while",后跟一个标识符,后跟关键字" do",后跟零个或多个语句,后跟关键字" end"。

这描述了一种非常简单的编程语言的语法,但它不是语法。这是一个描述相同语言的语法:

program   ::= statement*
statement ::= "var" ID ";"
            | ID "++" ";"
            | ID "--" ";"
            | "while" ID "do" statement* "end"
相关问题