A semantic analyzer