構文解析と意味解析がどのように機能するのか疑問に思っています。
インタプリタのレクサーと文法の構築を終了しました。
次に、この文法の再帰降下 (トップダウン) パーサーを実装します。
たとえば、次の文法があります。
<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 の 3 つのデータ型があるとします。各データ型の値は異なるため (例: ブール値のみの true または false)、データ型に正しく適合するかどうかをどのように判断できますか? 私のコードのどの部分がそれを決定しますか?
私はコードをどこに置くのだろうかと思っています:
1.) call the semantic analysis part of my program.
2.) store my variables into the symbol table.
構文解析と意味解析は同時に行われますか? または、最初に構文解析を終了してから意味解析を行う必要がありますか?
私は本当に混乱しています。助けてください。
ありがとうございました。