JAse开源项目缓慢进展中,许多地方和许多算法不断地颠覆、重写,这也是预料当中的。目前来说总体架构是不会变的了:以一个swf文件为基础提供文本框和一些菜单栏的基本功能;语法分析插件以不同语法分发为各自的swf文件,用到的时候才去读取。
当然,所有的语法文件都是面向接口编程的(实现IParser接口即可,这个理念继承自jssc5),这也使得按需加载成为可能。废话不说,来看几张预览图。
开始的选择画面:
第一个被我“强奸”的是js(最熟么),其它的会陆续添上。我默认放了一段Mootools的代码:
拉一拉滚动条,性能还不错,就是有不少bug还没修正:
至于语法编辑器用到的破损、修复、高亮模型,我非常感谢http://www.cppblog.com/megax/archive/2008/07/09/55753.html这篇文章给予的提示,同时也感谢其作者和我互通邮件的帮助。不过Megax所采用的依然是分区正则法,并非DFA状态图分析。而C++的性能远非as3所能匹敌,所以JAse目前仅能做到千行级代码,上万行后就会感觉到卡。
as3的性能瓶颈其实并不是主因,主因是textfield的性能太弱。实际测试中只是在第一次装载大量文本(万行)会卡,在拖动分析的过程中却非常流畅。今天我装了CS4(以前一直用CS3),启用了GPU硬件加速来提高渲染textformat的速度,所以如果不计textfield的拖后腿的话,预计是能达到十万行的量的。如果分析状态的数据结构由数组换成Vector(类似Java的泛型ArrayList,基于性能考虑我决定JAse将基于Flash Player 10),那么百万行级也不是不可能。
所以在JAse基本完成后,如果自定义优化textfield的性能,则是重点。目前思路有点苗头,是否能实现就难说了。另外Text Layout Framework中并未包含什么高效的input组件,本来还想瞅瞅,结果失望而归。

本博客所有文章均采用