Каково различие между синтаксическим анализатором и сканером?

Используя нежадные кванторы вот, вероятно, лучшее решение, также потому что это более эффективно, чем жадная альтернатива: Жадные соответствия обычно идут, насколько они могут (здесь, до конца текста!) и затем прослеживают символ после символа, чтобы попытаться соответствовать части, прибывающей впоследствии.

Однако рассматривают использование отрицательного класса символов вместо этого:

Project name:\s+(\S*)\s+J[0-9]{7}:

\S средства “everything кроме пробела и это точно, что Вы хотите.

15
задан Brian Tompsett - 汤莱恩 22 June 2016 в 14:17
поделиться

2 ответа

Сканер просто превращает входную строку (скажем, файл) в список токенов. Эти токены представляют такие вещи, как идентификаторы, круглые скобки, операторы и т. Д.

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

В терминах синтаксических анализаторов языков программирования выходные данные обычно называют абстрактным синтаксическим деревом (AST). Каждый узел в AST представляет различную конструкцию языка, например, оператор IF будет узлом с 2 или 3 подузлами, узлом CONDITION, узлом THEN и, возможно, узлом ELSE.

Анализатор не дает узлы любое значение за пределами структурной сплоченности. Следующее, что нужно сделать, это извлечь значение из этой структуры (иногда это называется контекстным анализом).

21
ответ дан 1 December 2019 в 02:55
поделиться

Синтаксический анализ (в общем смысле) заключается в превращении символов (символов, цифр, левых скобок и т. Д.) В предложения вашей грамматики.

Лексический анализатор («лексер») разбирает отдельные символы из файла исходного кода на токены. Оттуда «синтаксический анализатор» превращает эти целые токены в предложения вашей грамматики.

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

4
ответ дан 1 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: