Можно ли продолжить синтаксический анализ с другими правилами после возникновения исключения в семантике? - PullRequest
2 голосов
/ 08 января 2020

Возможен ли откат к другим правилам после возникновения исключения в действии semanti c? Как и в следующем (надуманном) сценарии:

var = /[a-zA-Z]+/;
keyword = 'for' | 'in';
a = var:var | keyword:keyword;

def a(ast):
    if (ast.var not in symbolTable):
        raise Exception()

, и когда возникает исключение, синтаксический анализ продолжается с правилом «ключевое слово». Мне известно о функции @@ ключевого слова, но я хочу объявить ключевые слова во время выполнения (мой анализатор предназначен для языка программирования с пользовательскими операторами).

1 Ответ

1 голос
/ 09 января 2020

Если код семантики повышает tatsu.exceptions.FailedSemantics, исключение будет обрабатываться точно как ParseException, поэтому нормальный поток управления синтаксическим анализом будет возобновлен.

...