Более быстрый способ прочитать список ключевых слов - PullRequest
0 голосов
/ 06 июня 2018

Я пишу простой лексер для языка программирования общего назначения, и один из типов токенов - это «ключевое слово», которое имеет некоторые предопределенные токены потока управления, такие как «if», «else», «while», «return»'.

Я хочу узнать самый быстрый способ проверить, есть ли какое-либо ключевое слово в моем списке, используя стандарт x86 C.

Моя идея состояла в том, чтобы использовать таблицу переходов, но сравнение строк C проблематично, так какC-строки - это массивы типа char.

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Теоретически хеш-таблица обеспечивает поиск O (1).Тем не менее, я бы реализовал статическую таблицу поиска.Предполагая, что количество токенов, которые вы ищете, мало.Линейный поиск в таблице не должен быть слишком дорогостоящим.

0 голосов
/ 06 июня 2018

Самый быстрый способ - это создать вручную три или эквивалентный конечный автомат.Flex (или любой другой вариант lex) сделает это за вас.

...