我明白语法和语义的区别-
语法:如何将符号组合成有效的表达式或语句。
语义学:构成表达式或语句的符号的意义。
但是语法是什么呢?例如:有时我听到人们说,有些构造“语法上不正确,但在语法上是正确的”。什么意思?
发布于 2011-10-30 21:02:19
语法只是指你表达想法的方式,独立于基本思想本身。
语法是一组(主要是句法上的)规则,说明如何在特定语言中形成有效的语句,以及语句的“类型”,根据这些规则形成该语句。
例如,C++和Java在许多方面都有类似的语法,但语法完全不同。一个能读懂其中一个代码的人很可能只在最小的难度下就能读取另一个中的代码。但是,能够相当好地阅读代码并不意味着他们也可以在任何地方编写代码。例如,C++程序员可能尝试使用typedef,而没有意识到Java既没有typedef,也没有任何类似的东西(因此在这方面,它们的语法是完全不同的)。
发布于 2011-10-30 21:53:20
两者之间的差别是模糊的,不值得过多地担心。
人们有时会把上下文敏感的约束放在句法正确性的保护伞下。最常见的例子是类型系统。另一个是Java的“返回后没有语句”规则。这就简化了正式的讨论:语法产生了一种语言(一组句子/表达式/程序),它是语义的领域;任何其他的东西都是“非程序”,语义不需要去理会它。
相反,“语法”通常是指一种描述上下文无关语言的方法(尽管有属性语法)。
不值得过多担心的原因是,类型系统经常被认为是语言的“静态语义”,就像它们是“正确性的语法规则”一样。有时,一种语言并不完全没有适当的上下文无关语法;例如,C必须将解析器中的信息反馈回lexer。
从实用主义的角度来看,任何依赖于“句法”和“语法”之间的区别的人最好这么说,并解释它们的含义。
发布于 2022-09-08 16:14:34
语法是描述语法的一组公式。有很多方法可以做到这一点,从正则表达式(对于非常简单的语言),到上下文无关的语法,到更不常见的选项。
类似地,您可以使用许多方法来描述语义。语义学、操作语义学和公理语义学是语义方法的一类。
https://softwareengineering.stackexchange.com/questions/116982
复制相似问题