Контроль отступов при разработке небольшого языка, похожего на Python

Я занимаюсь разработкой небольшого языка, похожего на Python, используя flex, byacc (для лексического и синтаксического анализа) и C ++, но у меня есть несколько вопросов, касающихся контроля области видимости.

так же, как python, он использует пробелы (или символы табуляции) для отступа, не только это, но я хочу реализовать разрыв индекса, как, например, если вы введете «break 2» внутри цикла while, который находится внутри другого цикла while, он будет не только разрываться от последний, но также из первого цикла (отсюда номер 2 после перерыва) и так далее.

пример:

while 1
    while 1
        break 2
        'hello world'!! #will never reach this. "!!" outputs with a newline
    end
    'hello world again'!! #also will never reach this. again "!!" used for cout
end
#after break 2 it would jump right here

но так как у меня нет символа «анти» для проверки, когда заканчивается область (например, C, я бы просто использовал символ «}»), мне было интересно, будет ли этот метод лучшим:

Я бы определил глобальную переменную, такую ​​как «int tabIndex» в моем файле yacc, к которой я бы обратился в своем файле lex, используя extern. затем каждый раз, когда я нахожу символ табуляции в моем файле lex, я увеличиваю эту переменную на 1. при синтаксическом анализе моего файла yacc, если я найду ключевое слово "break", я уменьшу его на величину, введенную после него из переменной tabIndex, и когда я достигаю и EOF после компиляции и получаю tabIndex! = 0 я бы вывел ошибку компиляции.

Теперь проблема в том, как лучше узнать, уменьшился ли отступ, следует ли мне читать символы \ b (backspace) из lex, а затем уменьшать переменную tabIndex (когда пользователь не использует break)?

Еще один способ добиться этого?

также еще один маленький вопрос, я хочу, чтобы у каждого исполняемого файла была начальная точка в функции start (). Должен ли я жестко закодировать это в свой файл yacc?

извините за длинный вопрос, любая помощь очень ценится. Кроме того, если кто-то может предоставить файл yacc для python, было бы неплохо в качестве руководства (попробовал поискать в Google и безуспешно).

заранее спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос