`
dcaoyuan
  • 浏览: 299897 次
社区版块
存档分类
最新评论

新的Scala for NetBeans提供测试

阅读更多
重新写过的Scala for NetBeans现在可以在NetBeans 6.1RC或者最新的Nightly Build上测试,你可以从NetBeans Update Center获得,方法是:
"Tools"->"Plugins", 检查"Setting"看"Last Development Build"是否在Update Centers列表中, url是: http://deadlock.netbeans.org/hudson/job/javadoc-nbms/lastSuccessfulBuild/artifact/nbbuild/nbms/updates.xml.gz

如果你用的是Beta/RC/Release NetBeans 6.1, 你需要手工添加上述"Last Development Build" Update Center。

支持的功能有:

    * Syntax highlighting
    * Auto-indentation
    * Brace completion
    * Formatter
    * Outline navigator
    * Occurrences mark for local variables and function
    * Instance rename for local variables and function
    * Go-to-declaration for local variables and function
    * Scala project
    * Basic debugger


已知的问题有:

    * Auto-completion it not full supported yet and not smart
    * There is no parsing errors recovering yet
    * Semantic errors are not checked on editing, but will be noticed when you build project
    * Due to the un-consistent of Scala's grammar reference document, there may be some syntax broken issues


另外,Fortress的编辑插件也可以以同样的方法获得和安装,不过,这个插件还很弱。

Erlang的插件现在也可以同时安装在同一个NetBeans 6.1RC和Nightly Build上,不需要另外下栽ErlyBird了,同时,Indexing的性能有了很大提高,在我的机器上大约5分钟就行了。

Erlang插件将来也会重写。
分享到:
评论
5 楼 dcaoyuan 2008-04-23  
因为NetBeans的几个基础模块在Trunk里有与6.1不兼容的的变化,所以现在Scala plugins只能安装在Nightly Build上了。现在Trunk里的代码目标是是7.0,在多语言支持方面会有较大的重构。

写语言插件的信息恐怕就是我的英文blog上比较多了。你可以跟一下我的Scala代码。

4 楼 dcaoyuan 2008-04-19  
自言200801 写道
dcaoyuan 写道
自言200801图中的错误刚改掉了,明天下午Update一下Scala Editing插件就行了。


呵呵,速度真快,还3小时不到就改好啦。

不过我有点好奇:

你为Scala、Erlang做NetBeans上的插件,上次你说这插件主体是语言的parser,
那这parser是要做到什么程度呢?只是完成语法错误检查就行了吗?
语义层次的错误能检查出来吗?

NetBeans是内置javac的,
我去年跟“歆渊”在javaEye里讨论过了,
NetBeans里内置的javac能检测到数据流分析层次的错误(比如一个final变量是否正确赋值都能在editor中提示出来),

Scala、Erlang都是编译型的语言,按理说也能做到NetBeans内置的javac一样,
如果只是一个语法层次的parser,是不是显得功能弱了点?
如果做得再往下深几层,又差不多实现大半个编译器了,这样的话你不借助官方编译器提供接口自己实现难度不小。


Scala目前的official compiler对IDE的支持不行,eclipse的插件就是基于它的,可是连Type都不能检测出来。这个Official compiler对于IDE的主要问题在于:
1、它是一个global builder,就是说哪怕你只敲了一个字符,如果想得到现在的AST就要做一次Global builder,这对IDE来说,性能是无法接受的,所以eclipse的插件只好让你保存时才做解析;
2、很吃内存,恐怕500M内存的机器根本不能跑;
3、Lexer的结果好像不能单独得到,而对于IDE来说,很多操作最好能在lexer层次就完成,比如着色、缩进、括号匹配等,甚至lexer还最好是增量的,这样才有好的性能。

目前我自己写的lexer和parser有这样一些特点:
1、lexer是增量的,
2、Parser的性能基本与文件大小是线性的,这样即使打开很大的文件,性能也是可预测和线性的;
3、Parser的内存消耗非常小;
4、Parse后AST的位置信息只是一个参考,随后转换成lexer的对应Token,这是非常重要的,因为我可以在将来实现增量的Parser;
5、Parser是自动由语法定义文件产生,我可以很快跟上Scala语言的变化

自己写Parser的一个最大的好处就是我已经慢慢积累了一些可以重用的类,这样,支持一门新的语言非常容易,这些类可以逐渐成为一组API,为NetBeans提供更好的扩展。

至于以IDE为目的的Parser和以编译、运行为目的的Parser的区别,简单说,就是IDE的parser不需要最后编译成字节码或解释运行,其他的功能指向也全都是IDE,目标明确。以Scala为例,在Parser上之上,我首先实现了一个语义分析器,目前的功能在一周左右的业余时间完成,接下来是一个比较完整的类型分析和检查。

没错,语义分析和类型分析compiler本来都已经做得好好的,但就象前面说的,除非象javac一样与IDE的开发人员密切合作,否则,还是没多大用处,IDE开发人员还是需要一次、两次地遍历这些结构,来产生IDE需要的信息。

语义层次的错误检查和类型检查都需要Global的信息,但我自己的做的好处是顺便与IDE的索引功能一起完成,反正都要做,干脆自己来。

IDEA和Eclipse为Scala的插件都干了很久了(若干年了),但实际结果证明,我的途径不是比他们都快吗?有一点你说的没错,我就是个实干家,喜欢动手、马上动手,喜欢推翻自己,喜欢从头再来,这样总比等别人来推翻好吧:-),软件不是房子,没有几十年都屹立在那里的,甚至越久越古典,当然理论除外。
3 楼 dcaoyuan 2008-04-18  
自言200801图中的错误刚改掉了,明天下午Update一下Scala Editing插件就行了。
2 楼 dcaoyuan 2008-04-18  
自言200801 写道

能否告知jline.dll的源码在哪里?

http://jline.sourceforge.net
1 楼 Eastsun 2008-04-18  
支持一下
PS:LS现在是用什么资料学习Scala呢?
习惯了命令式的编程,代码风格很难改变~

相关推荐

Global site tag (gtag.js) - Google Analytics