Зачем использовать лексические анализаторы?

StackOverflow https://stackoverflow.com/questions/1820103

  •  10-07-2019
  •  | 
  •  

Вопрос

Я создаю свой собственный язык с помощью Flex, но хочу знать кое-что:

  • Зачем мне использовать лексические анализаторы?
  • Они собираются мне чем-то помочь?
  • Они обязательны?
Это было полезно?

Решение

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

Однако для создания вашего языка вам понадобится нечто большее, чем просто гибкость:Лексический анализ – это лишь первый шаг.

Другие советы

Каждый раз, когда вы преобразуете входную строку в строки, разделенные пробелами, и/или числовые значения, вы выполняете лексический анализ.Написание каскадной серии else if (strcmp (..)==0) ... высказывания считаются лексическим анализом.Даже такие противные инструменты, как sscanf и strtok, являются инструментами лексического анализа.

Вы захотите использовать такой инструмент, как flex, вместо одного из вышеперечисленных по одной из нескольких причин:

  • Обработку ошибок можно сделать намного лучше.
  • С помощью flex вы можете быть гораздо более гибкими в выборе различных вещей.Например, сложно правильно проанализировать шестнадцатеричное значение формата C с помощью процедур сканирования.сканирование в значительной степени должно знать приходит шестнадцатеричное значение.Лекс может разобраться с этим за тебя.
  • Сканеры Lex работают быстрее.Если вы анализируете много файлов и/или больших файлов, это может оказаться важным.

Вы могли бы рассмотреть возможность использования лексического анализатора, потому что вы можете использовать BNF (или EBNF) для декларативного описания вашего языка (грамматики), а затем просто использовать синтаксический анализатор для анализа программы, написанной на вашем языке, и поместить ее в структуру в памяти, а затем свободно манипулировать им.

Это не обязательно, и вы, конечно, можете написать свой собственный, но это зависит от того, насколько сложен язык и сколько времени у вас есть на изобретение велосипеда.

Кроме того, тот факт, что вы можете использовать язык (BNF) для описания своего языка без изменения самого лексического анализатора, позволяет вам проводить множество экспериментов и изменять грамматику вашего языка, пока вы не получите именно то, что вам подходит.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top