Così Diciamo che ho il seguente grammatica:Come analizzare i nodi figli?
let_stat = "let" iden [ "=" expr ];
if_stat = "if" expr "->" stat;
stat = let_stat | if_stat;
questo sarebbe il seguente codice pseudo-ish:
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() {
}
Quale sarebbe la funzione parseStatement
fare? Come sceglierebbe quale funzione chiamare, la funzione if_stat o la funzione let_stat? O dovrei buttare tutto il codice in una funzione? Non capisco, ogni aiuto sarebbe grandioso dal momento che sono confuso.
Oh capisco, perfetto. E naturalmente, risposta dall'unica e unica Ira Baxter, sembra che tu risponda a molte mie domande :) Grazie! :) –
@ user3839220: Stai facendo domande sul mio territorio: -} –