2014-10-10 1 views
4

Я использовал несколько Scala DSL, и мне было интересно, разрабатывает ли он один из них, также может обслуживать специфические для DSL компиляции. Идея заключается в том, что язык, специфичный для домена, также будет обладать сообщениями об ошибках компиляции домена, помогая эксперту по домену правильно разбираться. Это возможно в Скала?Может ли scala dsl быть закодирована для выдачи собственных специализированных ошибок компиляции?

+0

Я считаю, что вы можете делать такие вещи с помощью [scala macros] (http://docs.scala-lang.org/overviews/macros/overview.html#reporting-warnings-and-errors) * warning: not для слабонервных * – Dylan

+1

Я тоже думал о выдаче специализированных сообщений для вещей, которые не контролируются с помощью макросов, насколько мне известно. Такие вещи, как тип рассогласования несоответствий, неправильное использование оператора ... требует ли это компиляции самого компилятора или у компилятора есть какие-либо аппаратные средства api или что-то в этом роде? – matanster

ответ

4

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

Как @Dylan отметил, что если вы хакерство Scala с макросами you can usec.abort, c.info и c.error сделать выход compiller некоторые пользовательские ошибки/дополнительная информация.

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

+0

+1 для implicitNotFound. – Dylan

+0

Любая компиляторная аппаратура/api, которая может принять это все дальше? – matanster

+0

Нет никого, о котором я знаю. –

 Смежные вопросы

  • Нет связанных вопросов^_^