我想知道语法分析和语义分析是如何工作的。
我已经完成了我的解释器的词法分析器和语法构造。
现在我将为这个语法实现一个递归下降(自上而下)解析器
例如,我有以下语法:
<declaration> ::= <data_type> <identifier> ASSIGN <value>
所以我这样编码(在java中):
public void declaration(){
data_type();
identifier();
if(token.equals("ASSIGN")){
lexer(); //calls next token
value();
} else {
error();
}
}
假设我有三种数据类型:Int、String 和 Boolean。由于每种数据类型的值不同,(例如,仅在布尔值中为真或假)我如何确定它是否正确适合数据类型?我的代码的哪一部分会确定这一点?
我想知道我会将代码放在哪里:
1.) call the semantic analysis part of my program.
2.) store my variables into the symbol table.
语法分析和语义分析是否同时发生?还是我需要先完成语法分析,然后再进行语义分析?
我真的很困惑。请帮忙。
谢谢你。