Препроцессор
Препроцессор выполняет функции по очистке кода перед непосредственной компиляцией. В нашем случае необходимы следующие манипуляции:
удаление комментариев
удаление пустых строк
Препроцессор получает на вход исходный код программы и отдает на выход его же, но в обработанном виде.
Например, такой код:
def main() -> None:
x: int
x = input() # hello
# it's me
x = x + 1
print(x)
превратится в следующий:
def main() -> None:
x: int
x = input()
x = x + 1
print(x)