Source: https://lipn.univ-paris13.fr/~rozenknop/Cours/ITCN_MLAS/Seance1/solution-intro-syntaxe.pdf