Как локализовать синтаксические ошибки в Mathematica? - PullRequest
1 голос
/ 13 января 2011

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

http://yaroslavvb.com/upload/save/syntax-error.nb

1 Ответ

3 голосов
/ 13 января 2011

Может быть, я что-то упустил, но в вашем примере это было довольно просто: как только я положил ваш код в блокнот и попытался запустить, появилась обычная оранжевая скобка, и когда вы раскрываете сообщения, она очень четко заявляетчто проблема заключалась в пустых скобках в вашей функции vertexFormula.По моему опыту, в большинстве случаев оранжевая рамка дает достаточно подсказок.

Еще один замечательный способ, которым я ежедневно пользуюсь, - подсветка кода в Workbench.Он сразу выделяет синтаксические ошибки, плюс у вас есть очень мощная навигация на основе Eclipse как для одного пакета, так и для нескольких пакетов.Может показаться, что вы теряете некоторую гибкость, переходя в Workbench из интерактивной разработки FrontEnd, но я обнаружил обратное (или, может быть, это месть моего корпоративного Java-фона): вы по-прежнему можете хранить свои записные книжки в Workbenchпроект, где вы делаете начальную разработку, но затем они привязываются к проекту и ряду пакетов, которые вы уже разработали и используете.Переход от записной книжки к пакету не может быть проще, поскольку вы можете продолжать использовать эту записную книжку после переноса кода в пакет, и вам даже не придется беспокоиться о загрузке пакета, если вы делаете это только один раз.внутри проекта.В целом, я считаю, что разработка на основе Workbench гораздо более увлекательна, как только ваш проект наберет критическую массу (я бы сказал, возможно, около 1000 loc, но ymmv).Но, завершив новые и независимые блоки функциональности, я все же предпочитаю полностью создавать прототипы во FrontEnd.

Если вы придерживаетесь некоторых определенных стандартов кодирования в своем коде или работаете с кодом, который делает, вы можете разработатьнекоторый простой частичный синтаксический анализатор, который по крайней мере разбивает код на полные куски (определения функций, Module-s и т. д., CompoundExpressions).Затем вы можете использовать ToExpression (скажем, сопоставить его со списком фрагментов строкового кода, возвращаемого вашим частичным анализатором), чтобы увидеть, какой фрагмент кода проблематичен (он вернет $ Failed для него).Но если вы используете Workbench, это вообще не нужно.

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