语法和语义的区别

一种语言是合法句子的集合。什么样的句子是合法的呢?可以从两方面来判断:语法和语义。语法是和文法结构有关,然而语义是和按照这个结构所组合的单词符号的意义有关。合理的语法结构并不表明语义是合法的。例如我们常说:我上大学,这个句子是符合语法规则的,也符合语义规则。但是大学上我,虽然符合语法规则,但没有什么意义,所以说是不符合语义的。

在antlr的文法中,可以指定自定义的语言的语法规则的集合。antlr用这些规则来产生识别器来识别该语言的句子。为了遵循语义规则,必须在文法中加入actions或者semantic predicates。actions来测试不同的tokens的“值”和它们之间的关系来决定语义是否合法。例如:在符号表中查找类型名来保证该tokens的“值”是类型而不是变量,这就是语义规则的应用。

你可能感兴趣的:(others)