Синтаксический анализатор для синтаксиса Mathematica?

Я разрабатываю в Python в течение нескольких лет теперь. Недавно я должен был перечислить все файлы в каталоге и создать структуру с именем файла, размером, атрибутами и датой модификации. Я сделал это с os.listdir и os.stat. Код был довольно быстр, но чем больше записей в каталогах, тем медленнее мой код стал сравненным с другим filemanagers список того же каталога, таким образом, я переписал код с помощью БОЛЬШОГО ГЛОТКА/C++ и был действительно удивлен, насколько быстрее код был.

11
задан Nestor 22 October 2009 в 16:31
поделиться

4 ответа

Мой модуль matheclipse-parser реализует синтаксический анализатор на Java, который может анализировать большое подмножество математических выражений. См. Страницу readme.md для использования. Может парсер портировать на C #?

6
ответ дан 3 December 2019 в 04:33
поделиться

Я не думаю, что такое уже существует (я очень хотелось бы знать об этом). Но может быть полезно, что в Mathematica вы можете применить функцию FullForm к любому выражению и получить что-то очень легкое для анализа, вроде s-выражения в Lisp. Например,

FullForm[a+b*c]

дает

Plus[a, Times[b,c]]

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

0
ответ дан 3 December 2019 в 04:33
поделиться

Грамматика математики плохо документирована, правда. Но AFAIK, это LALR (1) и, вероятно, LL (1); заключенный в скобки / помеченный синтаксис из дает синтаксическому анализатору полные подсказки о том, чего ожидать дальше, точно так же, как LISP и XML.

В DMS Software Reengineering Toolkit действительно есть грамматика Mathematica, которая использовалась для реальных задач. Это включает в себя программы MMa, а также чистые формы выражений.

Это, вероятно, не поможет вам, так как вам нужна одна на C #.

Если у вас есть доступ к ядру, я бы придерживался этого.

1
ответ дан 3 December 2019 в 04:33
поделиться

Я написал синтаксический анализатор Mathematica на 300 строках кода OCaml по контракту с Wolfram Research и обнаружил, что это довольно легко, поскольку грамматика четко задокументирована в их литературе , и любые двусмысленности легко найти, поиграв с самой Mathematica.

17
ответ дан 3 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

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