Разработка лесического анализатора для языка Go

Для языка Go разработать:

– лексический анализатор, распознающий необходимые лексемы;

– грамматику языка, включающую в себя базовые конструкции языка;

– программное средство, проверяющее исходный код программы на соответствие грамматике.

Лексический анализатор можно разработать вручную или использовать утилиты-генераторы. Поддерживаемое подмножество языка должно включать в себя четыре базовых конструкций.

Если кто-то такое делал, помогите. Хотя бы для примера. Можно не Go, а какой другой язык, но хотя бы пример, как делать эту практическую.