Я изучаю лексер на Курс программирования языков Уэстли Веймера.Python lexer лексический анализ правил приоритета токена, касающийся двусмысленностей --- почему STRING имеет приоритет над WORD?
Отмечает здесь https://www.udacity.com/wiki/cs262/unit-2#quiz-rule-order
{видео, если вы заботитесь смотреть, последние 40 секунд.} https://www.udacity.com/course/viewer#!/c-cs262/l-48713810/e-48652568/m-48676965
Тест: Когда два определения маркеров может соответствовать той же строки, поведение наш лексический анализатор может быть неоднозначным .....
Предположим, что мы имеем строку ввода
привет, «мир , "
и мы хотим, чтобы входная строка имела значение WORD STRING . Какое правило должно быть последним? т. Е. «...... то, что я хотел бы вам сделать, это сказать мне, какая из этих функций, какое из этих правил, должно было прийти последним, имея в виду, что тот, который на первом месте, побеждает чтобы приветствовать «мир», чтобы сломать слово, за которым следует строка ».
def t_WORD(token):
r'[^ <>]+'
def t_STRING(token)
r'"[^"]*"'
........ Ответ:
t_STRING , затем t_WORD
.......... Я не понимаю даже после просмотра видео несколько раз, почему STRING имеет приоритет над WORD?
Пожалуйста, просветите.
спасибо.