Je ne peux pas vraiment simplifier, c'est vrai, je ne peux qu'expliciter.
La structure d'un "if" est la suivante (je vais utiliser des regex par commodité) :
- if
- (.+)
- {
- .+
- }
- optionnel : else | elseif
La structure d'un elseif est la suivante :
- elseif
- {
- .+
- }
- optionnel : elseif | else
La structure d'un else est la suivante :
Je présente ça comme je peux sur JV.com, le tout est à mettre en une grammaire (ou un automate), et je ne prends pas en compte les possibilités de one-liner que tu ne peux pas reconnaître et qui te demandera de revoir ton code en profondeur pour passer, comme un compilateur, par des phases de constructions/reconnaissances/vérifications (lexeur, lexème...). Bref, un p'tit cours de compilation.
Si tu veux pouvoir découper correctement ton if ainsi que ses suites possibles, il faut obligatoirement que tu prennes en compte l'accolade ouvrante, ce que tu ne fais pas du tout actuellement.
J'espère que c'est plus clair, car je pourrai difficilement expliciter plus.