2014-10-10 45 views
4

我已经使用了一些Scala DSL,并想知道是否开发一个,也可以满足DSL特定的编译错误。这个想法是,一个领域特定的语言也会有特定领域的编译错误信息,帮助领域专家正确地做事。 Scala中可能吗?Scala dsl可以编码以发布自己的专门编译错误吗?

+0

我相信你可以用[scala宏]做这样的事情(http://docs.scala-lang.org/overviews/macros/overview.html#reporting-warnings-and-errors)* warning:not对于心灵的晕眩* – Dylan 2014-10-10 18:10:29

+1

我也在考虑发布专门的消息,通过宏来控制事物,尽我所知。像 类型不匹配编译错误,操作符不正确的使用......这是否需要分叉编译器本身或编译器有任何仪器API或类似的东西? – matanster 2014-10-10 18:29:53

回答

4

其中可能有用的东西是annotation.implicitNotFound。您可以通过它的帮助来自定义编译器错误的未解决含义。

由于@Dylan指出,如果你与macroses you can usec.abortc.infoc.error使compiller产量一些自定义错误/额外的信息黑客斯卡拉。

在这种情况下,annotation.compileTimeOnly也可能有帮助。它允许限制代码的某些部分的使用,并在有人试图访问它时生成自定义错误消息。

+0

+1用于implicitNotFound。 – Dylan 2014-10-10 18:39:16

+0

任何编译器工具/ API可以进一步采取这一切? – matanster 2014-10-12 19:14:32

+0

我没有人知道。 – 2014-10-12 19:55:36

相关问题