45Fermer47
sebrmvLe 27/05/2009 à 16:01
Je ne sais pas si ça peut encore aider, mais voici une grammaire LL(1) pour les expressions arithmétiques (forme BNF étendue)

Expr = Term { SumOp Term }
SumOp = "+" | "-"
Term = SignedFactor { ProdOp SignedFactor }
ProdOp = "*" | "/"
SignedFactor = [ NegateOp ] Factor
NegateOp = "-"
Factor = number | "(" Expr ")"

Sinon, notez que les "vrais" compilateurs n'utilisent en général pas les outils automatiques style yacc.

edit: j'avais oublié les parenthèses wink