【问题标题】:What is the difference between "syntax" and "grammar" in compiler?编译器中的“语法”和“语法”有什么区别?
【发布时间】:2015-12-09 19:05:51
【问题描述】:

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

【问题讨论】:

  • 不,它们是同一事物的两个词。

标签: syntax compiler-construction programming-languages grammar


【解决方案1】:

语法是一系列产生一种语言的有效“词”的产生式。这是一种指定语言语法的方法。指定语法的另一种方法是使用简单的英语,但如果您希望它足够精确以用作规范,那么对于非平凡的语言来说最终会非常冗长。

例如,考虑以下文本:

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

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

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

program   ::= statement*
statement ::= "var" ID ";"
            | ID "++" ";"
            | ID "--" ";"
            | "while" ID "do" statement* "end"

【讨论】:

    猜你喜欢
    • 2013-07-29
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 2010-12-25
    • 2018-11-28
    • 2013-07-07
    相关资源
    最近更新 更多