Диаграмма состояний / переходов лексического анализа - Какое значение имеет * (звездочка), чтобы убрать прямой указатель? - PullRequest
3 голосов
/ 29 декабря 2011

Я читаю Компиляторы: принципы, методы и инструменты и не понимаю этого:

Кроме того, если необходимо убрать указатель вперед, одинposition (т. е. лексема не включает символ, который привел нас к принимающему состоянию), тогда мы дополнительно поместим * около этого принимающего состояния.В нашем примере, нет необходимости откатываться вперед более чем на одну позицию, но если бы это было так, мы могли бы присоединить любое количество * к принимающему состоянию.

Все это имеет смысл, но я не понимаю значения звездочки.Книга просто использовала его в регулярных выражениях (звезда Клини / замыкание), используется ли она для представления чего-то другого, или все еще звезда Клини?

1 Ответ

3 голосов
/ 29 декабря 2011

Нет, это не звезда Клини, текст объясняет это, в сущности говорится, что нужно вернуть последний токен, потому что этот символ не является частью принятых символов.Если вы рассматриваете, например, просто <, то вы читаете два символа в RE, но на самом деле вы не хотите читать 2-й, поэтому вы кладете его обратно, чтобы любое последующее чтение сначала нашло его.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...