Хорошо, поэтому я пишу функцию как часть лексического анализатора, который «ищет» или ищет совпадение с ключевым словом. Мой лексер перехватывает все очевидные токены, такие как одно- и многосимвольные операторы (+ - * / > < = == etc
) (также комментарии и пробелы уже удалены), поэтому я вызываю функцию после того, как собрал поток только буквенно-цифровых символов (включая подчеркивания) в string
, эта строка должна соответствовать либо известному ключевому слову, либо идентификатору.
Так что мне было интересно, как я мог бы идентифицировать это? Я знаю, что мне нужно сравнить его с некоторым списком или массивом или чем-то из всех встроенных ключевых слов, и если он совпадает с одним возвратом, соответствующим его значению enum; в противном случае, если совпадения нет, то это должен быть идентификатор функции или переменной. Так как мне искать спички? Я где-то читал, что что-то, называемое бинарным деревом поиска, является эффективным способом сделать это, или с помощью хэш-таблиц, проблема в том, что я никогда не использовал их, поэтому я не уверен, что это правильный путь. Могу ли я использовать базу данных MySQL?