想做一个有语法分析的编辑器(100分)

  • 主题发起人 主题发起人 dd
  • 开始时间 开始时间
D

dd

Unregistered / Unconfirmed
GUEST, unregistred user!
想实现类似Delphi或Uedit这样可以加粗、彩色显示关键字
的编辑器,用Richedit,有几个问题:

1.在Onchange里做语法分析吗?我要编辑的文件在200k-800k左右,
每敲一个键分析一次全文效率太底,不能用,如果只分析一部分
的话,怎么确定分析哪一块呐?

2.当SelLength=0时,SelStart=当前光标位置,SelLength>0时,好象
只能用GetPosition(好象拼错了?)得到(x,y)的行列号,怎么样
转化行列号和SelStart指示的绝对位置呢?
 
语法分析编辑器工程很大,必用现成代码。
可参考绝地编辑器的代码:http://jediedit.heha.net/cn/
在《PC应用2000第二辑》配套光盘中也有,市面有卖。
 
同意Croco。我见过Delphi写的HTML编辑器,功能很差,代码很大。
 
你希望达到什么目的呢?
 
学学“编译原理”,就很容易设计了。别看词法、语法分析的程序量
很大,但其实原理都很简单的,一旦建立了分析规则,哪怕是一个不
懂编程的人都可以写出分析程序,因此就有了自动生成词法、语法分
析的程序,如Lex、Yacc等(Linux下是免费的)。所以,最最简单的
方法就是分析出Delphi的语法规则,然后写脚本,通过Lex和Yacc自
动生成处理程序。
 
同志们, 看清楚了,人家是要 语法高亮,可不是语法分析。

1, 是在 onchange 里,我做的是重新分析 前一行,当前行,后一行,
还可以优化。

2, 是有这个毛病,它的 CaretPos 会出错,不过你要了这个没用,
 
我有几个实现此功能的例子要吗?
 
谢谢各位网友,再说明一下:

绝地编辑器源码还没看,很多控件没有,我会再试试的。

语法分析没问题,我已经做的差不多了,象superMMX网友说的一样,
我的问题是对哪一部分做语法分析,superMMX的方法在一般情况下可以
但块粘贴,块删除时好象有问题。

第二个问题也很关键,我现在用
s:=0;
for i:=0 to 当前行-1 do
s:=s+Length(richedit1.lines);
s:=s+当前列;
得到这个值的,感觉实在太土,效率太低

这样吧,如果得到满意答案,再加100分。

to www : 很想要,please email to : lllly@263.net thanks
(不要包含"[Delphi]",拒收)
 
多人接受答案了。
 
to www: 我想要yh_01@163.net 先谢了!
 
后退
顶部