Вы когда-либо эффективно использовали лексический анализатор/синтаксический анализатор в приложении реального мира? [закрытый]

Вы должны добавить к своему контроллеру:

use Cake\View\ViewBuilder; 
15
задан 4 revs, 4 users 57% 22 June 2016 в 13:29
поделиться

10 ответов

Да, я использовал их. Да, можно сделать вещи с ними - но любое время, Вы выбираете неправильный инструмент для задания, Вы будете делать бесполезную боль для себя.

Некоторый пример нестандартного использования я лично поместил технологию в:

  • очистка данных из отчетов сгенерирована унаследованными системами
  • выбирание шаблонов в данных, слишком сложных для regexp
  • анализ протоколов
  • основанные на тексте игры приключения
  • API метапрограммирования, который съел Толедо (не это - настоящее имя),
  • анализ кода / регистрирует анализ
  • выбор независимо полей "свободной формы" в базе данных
  • и ставриды больше я "m упущение (я стар),
14
ответ дан 1 December 2019 в 02:10
поделиться

Подсветка синтаксиса. Текстовый редактор Scite позволяет Вам писать свой собственный лексический анализатор (в C++) для обеспечения подсветки синтаксиса для любого пользовательского языка. Я записал свой собственный лексический анализатор для Scite как напоминание по этой теме (я изучил его только что в моем университете).

Регулярные выражения часто используются в качестве альтернативы для сопоставления с образцом и простой обработки языка. Это еще более распространено из последних лет благодаря улучшенной поддержке RegEx в платформах, таких как.NET. Во многих случаях разработчики даже не могут знать о lexing/parsing методах и тем самым попасть в использование Regex по умолчанию.

Однако как в другом ответе говорится, Regex может быстро стать неэффективным, медленным и трудным поддержать для чего-то большего чем простой грамматики/языка. В той ситуации синтаксический анализатор/лексические анализаторы обычно лучший выбор.

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

Да, я использовал их в материале реального мира - но главным образом создание пользовательских языков, для которых Вы используете лексические анализаторы и синтаксические анализаторы, было вытеснено языками, определенными в XML. Более подробный, но затем Вы не должны делать всей той работы...

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

Да, я использовал их. Я - большой поклонник ANTLR. Я даю некоторые подсказки и приемы при использовании ANTLR здесь и краткого подтверждения его здесь. Возможно вручить записи Ваш собственный синтаксический анализатор с помощью специальных методов, но это намного более твердо и возьмет намного дольше, чтобы выяснить, как внести изменения, когда необходимо вырастить язык, который синтаксический анализатор, как предполагается, анализирует.

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

Любое место Вы обрабатываете ввод текста, заканчивает тем, что использовало некоторый лексический анализатор/синтаксический анализатор, хотя несколько раз они заканчивают тем, что были вырожденным случаем (закон что-либо кроме запятой как один тип маркера и запятая как другой. Проанализируйте число, имя, число и конец строки. Такая вещь) одним способом посмотреть на него sscanf мог считаться большинством вырожденных случаев лексического анализатора/парсера-генератора.

Что касается полноценной lex/yacc операции? Я ожидаю, что это привыкает главным образом для GPLs и для вещей, которые подпадают под свободное определение DSLs

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

Яркий пример лексического анализатора/синтаксического анализатора, который используется во многих системах, существует в Apache Lucene (библиотека Search Index с открытым исходным кодом). И анализатор запроса и токенизатор документа используют эти techs. В то время как я предполагаю, что Вы могли категоризировать анализатор запроса в Lucene как dsl синтаксический анализатор, он все еще используется, чтобы помочь решить проблему реального мира.

В этом отношении я уверен, что Google использует своего рода лексический анализатор/синтаксический анализатор для своего собственного синтаксиса запроса и парсинга документа.

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

Это интересно -

Я просто записал лексический анализатор/синтаксический анализатор вручную, чтобы позволить простым основанным на операция со строками выражениям запроса быть обработанными реализацией IBindingListView. Это было первой полезной вещью за пределами кода, что я на самом деле смог использовать его для и не просто услышал о нем.

Симпатичный пешеходный пример, но я являюсь довольно пешеходным, по моему опыту, с ними.

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

Я не использовал одного из больших парней, чтобы сделать любой лексический анализ все же, я однако записал свой собственный лексический анализатор вручную для проекта, я продолжил работать. Мы должны были проанализировать данные, которые возвратились из компьютера данных Близкого Космического проекта, и они были записаны в SD-карту в двоичном файле. Я должен был разделить биты, преобразовать их от двоичного файла до десятичного числа и затем выписать все содержание в разделенном файле запятой.

Это - большая забава находиться и продумать его логически и записать конечный автомат для задачи под рукой!

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

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

Если вы хотите обрабатывать компьютерный язык, вам в значительной степени нужны лексеры и синтаксические анализаторы в качестве отправной точки. Их недостаточно; язык 1960-х годов, на C, для бомбардировщика-невидимки B-2. См. http://www.semdesigns.com/Products/Services/NorthropGrummanB2.html

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

Да! Команда, с которой я работаю, реализовала структуру генерации документов, которая, среди прочего, позволяет оценивать (в основном арифметические) выражения. Мы используем синтаксический анализатор для извлечения выражений из входных данных / определений для сгенерированных документов и создания для них деревьев выражений. Впоследствии эти деревья оцениваются, и полученные результаты записываются в окончательный документ.

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

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