Еще один простой вопрос: есть ли способ сказать flex, чтобы предпочесть правило, которое соответствует короткой вещи над правилом, которое соответствует более длинной вещи? Я не могу найти хорошую документацию об этом.
Вот почему мне это нужно: я разбираю файл для псевдоязыка, который содержит некоторые ключевые слова, соответствующие инструкциям управления. Я бы хотел, чтобы они были абсолютным приоритетом, так что они не анализировались как часть выражения. Мне действительно нужна эта приоритетная задача, потому что мне не нужно писать полную грамматику для моего проекта (это было бы полностью перехитрить в моем случае, так как я выполняю структурный анализ в анализируемой программе, мне не нужно знать подробности..), поэтому я не могу использовать тонкую настройку грамматики, чтобы убедиться, что эти блоки не будут проанализированы в выражении.
Любая помощь будет оценена.
Вот пример проанализированного файла:
If a > 0 Then read(b); Endif
c := "If I were...";
While d > 5 Do d := d + 1 Endwhile
Я просто хочу собрать информацию о Ifs, Thens, Endifs и т.д. Остальное не имеет значения для меня. Вот почему я хотел бы, чтобы правила Ifs, Thens и т.д. Были приоритетными, чтобы не писать грамматику.