Yani şu dilbilgisine sahip olduğumu söyleyelim:Çocuk düğümlerini nasıl ayrıştırırım?
let_stat = "let" iden [ "=" expr ];
if_stat = "if" expr "->" stat;
stat = let_stat | if_stat;
Aşağıdaki psuedo-ish kodu:
let_stat parseLetStat() {
if token is "let" {
consume token
if token is identifier {
char *value = consumetoken.value
let_stat let = new let_stat;
let.name = value;
if token is "=" {
let.value = parseExpression;
}
return let
}
}
}
if_stat parseIfStat() {
if token is "if" {
consume token
expression expr = parseExpression;
block block = parseBlock;
if_stat ifstmt = new if_stat
ifstmt.expr = expr
ifstmt.block = block
return ifstmt
}
}
stat parseStatement() {
}
parseStatement
işlevi ne yapar? Hangi işlevi çağırmak, if_stat işlevi veya let_stat işlevi nasıl seçilir? Yoksa tüm kodu tek bir fonksiyona atabilir miyim? Tam olarak anlamadım, kafam karıştığından beri herhangi bir yardım harika olurdu.
Ah Anlıyorum, mükemmeldir. Ve tabii ki, tek ve sadece Ira Baxter cevapladı, benim sorularımın birçoğuna cevap veriyor gibisiniz :) Teşekkürler! :) –
@ user3839220: Benim bölgem hakkında sorular soruyorsun: -} –