Мне нужно создать лексер / парсер, который работает с входными данными переменной длины и структуры.
Скажем, у меня есть список зарезервированных ключевых слов:
keyWordList = ['command1', 'command2', 'command3']
и пользовательский вводстрока:
userInput = 'The quick brown command1 fox jumped over command2 the lazy dog command 3'
userInputList = userInput.split()
Как мне написать эту функцию:
INPUT:
tokenize(userInputList, keyWordList)
OUTPUT:
[['The', 'quick', 'brown'], 'command1', ['fox', 'jumped', 'over'], 'command 2', ['the', 'lazy', 'dog'], 'command3']
Я написал токенизатор, который может идентифицировать ключевые слова, но не смог найти эффективный способвстраивать группы не-ключевых слов в списки более глубокого уровня.
RE-решения приветствуются, но мне бы очень хотелось увидеть лежащий в основе алгоритм, поскольку я, вероятно, собираюсь расширить приложение на списки других объектов.а не только строки.