Source: https://info.usherbrooke.ca/vducharme/ift580/notes/06-Analyse_semantique.pdf