syntax研究的是句法,或者说是语言的结构,这无关乎语言实体的含义。
semantics研究的是语义/含义。
对于同一个的语义,不同的语言会采用不同的句法来构成句子。例如:
x += y | C, C++, C#, Java, Perl, Python, Ruby, PHP, etc. |
x := x + y | ALGOL, BCPL, Simula, ALGOL 68, SETL, Pascal, Smalltalk, Modula-2, Ada, Standard ML, OCaml, Eiffel, Object Pascal (Delphi), Oberon, Dylan, VHDL, etc. |
ADD x, y | Assembly languages: Intel 8086 |
LET X = X + Y | BASIC: early |
x = x + y | BASIC: most dialects; Fortran, MATLAB |
Set x = x + y | Caché ObjectScript |
ADD Y TO X GIVING X | COBOL |
(incf x y) | Common Lisp |
Syntax是语法上的,Sematic是语义上的,在自然语言范围内举个简单的例子The dog is a man.从syntax上来说,这句话没有错,主谓宾齐全而且各个成分的性和格也没错,但是语义上来说是错的,dog 怎么能是man呢。4楼说的不错,在不同的领域,syntax 和semantic有着不同的对照,但大致关系和自然语言里是差不多的。