首页
社区
课程
招聘
kanxue请来一下
2004-12-13 19:04 7332

kanxue请来一下

2004-12-13 19:04
7332
关于http://bbs.pediy.com/showthread.php?s=&threadid=8376
里提到的代码着色问题。

我可以试一下。不过有言在先,精华6可能是没得指望了。但精华7没问题的。

我需要知道以下内容:
1、从数据库里获得的原文件(一个就可以)。
2、要求的目标形式。

主要是你说的“HTML文件的着色工具”太模糊。精确点。

就当学习正则式的练习。

=========================================================

更新历史

到0102为止
最新版本build:2005-01-02-01-48 0.1 Final(修正了C识别代码的一些小bug,不影响使用。也可以不更新)

功能
1、支持HTML形式的论坛文章着色
2、着色部分:
   关键字、宏定义、寄存器名、
   C风格注释//及/* */
   ASM风格注释(测试中)
   
3、自定义颜色,颜色代码和HTML的颜色代码一样
4、自动检测文章里是否含有C程序并作相应的处理以防止错误着色(测试中且会拖慢速度)。

局限
1、为提高速度及正确率起见,目前仅对<blockquote></blockquote>内的部分处理。
2、速度约为7K/秒(P4 1.6G)。其他的机器按照主频比例计算。
3、对程序和说明的混合文本着色有误认现象。
4、PEDIY论坛文章专用。
5、要求文本中HTML标签中不得有多余空格,否则处理结果可能不正确。

说明:
1、按停止按钮后,程序将处理完当前正在处理的文件后才停止处理。该按钮和“删除文件”的checkbox联合使用可以实现断点续着……不过请事先将原文件备份。
2、阙值为判断文章是否含有C程序的标准,取较大数值会导致部分C代码被错误着色,较小值可能导致部分文本无法被上色。
3、测试功能请慎重使用。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞1
打赏
分享
最新回复 (33)
雪    币: 32406
活跃值: (18810)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2004-12-13 20:24
2
0
谢谢!
精华六的文章形式:
附件:pediy.rar

网友们提出的着色主要是着色文章里的汇编代码。这是老罗的着色工具:
http://www.luocong.com/myworks/zipped/SCC/SCC.zip

这东西不急,其实我也想过,修改php代码,可以让论坛直接支持,只是暂时没这实力。
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
firstrose 16 2004-12-13 20:29
3
0
那么如果有人直接写ubb的怎么办呢?

另外还有,对于IDA等软件的反汇编结果,指令前面的Hex代码和指令地址怎么着色?
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
firstrose 16 2004-12-15 16:31
4
0
程序大致写出来了,但是在测试时发现问题。

有的词在不同的语言里的含义不同。比如public,在c里是keyword,在asm里是macro。但是破文里常常是几种语言混合使用。

因为你给的是html文件,而html的某些关键字和c/asm的关键字重合,所以会有错误。比如<span class="pediy">

另外,那个html文件看起来象是数据库中的文本经过程序处理的结果。能不能提供一个数据库中的原始文本?

换句话说,数据库中原始文本->语法着色->加html头(pediy的版权信息什么的)->最终结果

程序在

http://free.efile.com.cn/firstrose/color.rar

。有兴趣可以先看看。若是你会delphi,可以自己编译一下。

说明:程序当前目录下必须有*.stx(直接把scc里的stx文件拿来就可以了),最好只放一个
输出文件放在out目录(自动生成)里

因为是个雏形,只能处理当前目录下一个叫做pediy6621.htm的文件,批量处理的代码还没有写。运行时按btnrf就可以了。
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
laoqian 8 2004-12-19 00:05
5
0
支持!!!!
雪    币: 32406
活跃值: (18810)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2004-12-19 19:04
6
0
最初由 firstrose 发布
程序大致写出来了,但是在测试时发现问题。

有的词在不同的语言里的含义不同。比如public,在c里是keyword,在asm里是macro。但是破文里常常是几种语言混合使用。

因为你给的是html文件,而html的某些关键字和c/asm的关键字重合,所以会有错误。比如<span class="pediy">
........


谢谢,这2天在外地,没及时回应,不好意思。
不过,程序好像下不了。

如果能处理的好,就准备将论坛精华1~6全部着色处理了一下。
由于现在所有的数据全是HTML文件,所以没必要考虑数据库等文件了。HTML处理起来是比较麻烦,要考虑的因素太多。如实在麻烦就算了。
附另外的一些样例:
附件:Forum.rar
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
firstrose 16 2004-12-20 09:04
7
0
我放在http://firstrose.ys168.com/

“编程”目录下color.rar

密码pediy

多谢你给的另外的范例。范例已经够了。
雪    币: 32406
活跃值: (18810)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2004-12-22 17:24
8
0
最初由 firstrose 发布
我放在http://firstrose.ys168.com/

“编程”目录下color.rar

密码pediy
........


谢谢!
好像还不错,就是速度有点慢。
另外,最下面的版权声明处理后,有点乱了。
其他的我再处理几个文件再反馈。
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
firstrose 16 2004-12-23 08:44
9
0
最初由 kanxue 发布


谢谢!
好像还不错,就是速度有点慢。
另外,最下面的版权声明处理后,有点乱了。
........


抱歉,情况不是这样的……

不是有点乱,而是HTML的格式信息被这个程序破坏得很厉害。原因是html的格式代码和c/asm的keyword有冲突。而目前的核心还无法分辨一个keyword到底是html的还是c/asm的。

这个最faint了。

另外,文件已经更新,密码照旧。这次更新的内容是界面,增加了批量处理的代码和进度说明。核心没有更新。8过我在想办法。

PS:这两天会改核心,我在试。
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
firstrose 16 2004-12-23 15:58
10
0
:D

已经搞定了。

程序已经更新。

现在的版本可以比较好地处理你第二次给的范本

请试一下。

处理的时间和文本的长度有关,一般50k的文本需要半分钟。

这里我想说一下注意事项:

从范本中看,破文部分是被包括在<blockquote></blockquote>之间的,而程序正是针对这一点进行处理的。所以,对源文件的要求是:破文部分必须被包括在<blockquote></blockquote>之间,中间可以有html标签。但是,如果破文里含有的html标签中包含了要被上色的关键字,输出文本将不正确!

请特别注意!
雪    币: 32406
活跃值: (18810)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2004-12-23 19:41
11
0
最初由 firstrose 发布
:D

已经搞定了。

程序已经更新。
........


谢谢!我试试
论坛全集有文章3200篇,不知能不能对付的过来。;)
雪    币: 32406
活跃值: (18810)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2004-12-23 19:50
12
0
刚试过了,还有点问题。是对一些样式表得过滤下:“<p class="pediy"> <span class="pediy"><span class="postbody">”。

效果见:
附件:pediy.rar
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
firstrose 16 2004-12-23 21:04
13
0
OK,问题解决。不过要求样式表标签里的class="之间不能有空格。
比如<p class = "pediy">就不行,必须是<p class="pediy">,但是可以是<p   class=" pediy">。

其实要对html标签做过滤也很简单,只是这样一来最大的问题就成了效率了。

现在还有个问题是有的地方着色不正确。比如pediy6621.htm里的软件简介。

还有什么问题的话,等明天吧。抱歉。

忘说了,加了个自定义颜色。不过目前只能自定义3种。颜色代码和html用的一样。

需要源代码说一下。
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
firstrose 16 2004-12-24 13:27
14
0
已经更新。以后更新内容将直接在顶楼说明,不再采用跟贴形式。
雪    币: 32406
活跃值: (18810)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2004-12-24 17:09
15
0
谢谢,随机找了一些文件测试了一下,十分好用,真的十分感谢你的帮助。
现在还有几个小问题,麻烦有时间看看:
1. 测试了论坛精华1到6,只有论坛精华5不处理,样例见附件。每个精华集我都是用相同模板制作的,因此仅精华5这些文件会出现这问题,并且问题具有通用性。
附件:Bbs5.rar

2.另外,许多文章注释是用英文的分号“;”,能否支持下。

样例:
附件:pediy6546.rar
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
firstrose 16 2004-12-24 22:56
16
0
最初由 kanxue 发布
谢谢,随机找了一些文件测试了一下,十分好用,真的十分感谢你的帮助。
现在还有几个小问题,麻烦有时间看看:
1. 测试了论坛精华1到6,只有论坛精华5不处理,样例见附件。每个精华集我都是用相同模板制作的,因此仅精华5这些文件会出现这问题,并且问题具有通用性。
附件:Bbs5.rar

........


我也考虑过支持分号,但是测试结果很不妙。因为一些HTML标签也用分号。另外,C语言里大量使用了分号。这样,对于含有C程序的文本一定会出问题。所以我最后把它屏蔽了。

8过既然老大发话,那就开放得了。:D

这几天打算将C和ASM分开处理。就是说,可以指定文件是按照c/asm着色。这个主要就是考虑到注释的问题。因为ASM的;注释在c里是语法分隔符!统一处理的话肯定有兄弟要874偶di。但是就算分开也一定会有少数派。

精华5的问题其实是RPWT,没有想到应该判断大小写。
雪    币: 32406
活跃值: (18810)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2004-12-25 10:32
17
0
最初由 firstrose 发布


我也考虑过支持分号,但是测试结果很不妙。因为一些HTML标签也用分号。另外,C语言里大量使用了分号。这样,对于含有C程序的文本一定会出问题。所以我最后把它屏蔽了。

8过既然老大发话,那就开放得了。:D
........


原来这样,那分号不支持没关系,程序我己下,先测试一下。
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
firstrose 16 2004-12-28 11:08
18
0
已经更新。通知一下。
雪    币: 32406
活跃值: (18810)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2004-12-28 19:09
19
0
己下载,有问题再与你联系.:)
雪    币: 32406
活跃值: (18810)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2004-12-31 13:01
20
0
关于色彩问题,有些网友建议不要太花,所以我做了个样例,见附件的 pediy50193着色.htm 文件,你还有什么更好的主意?

现在还有些小问题?
1、注释的自动着色,有时会使其下一行的头几个字符也着上色了。Html每一行是以“<BR>”结束的,所以每行你可以用此判断是否结束。
2、如果注释中出现EAX、EBX等寄存器,EAX等又被着色了。不知此时能否让EAX等保持注释的颜色(绿色)?。附件:Bbs.rar
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
firstrose 16 2004-12-31 14:04
21
0
多谢反馈。终于有回音了,这几天我一直在留意。

1、关于颜色问题,我对颜色的搭配很不在行,所以没法给什么主意。但是欣赏好的颜色搭配还是可以的。:D
2、目前是以硬回车作为行结束的。<br>的问题以前也想过,不过当时因为测试没有问题,所以就偷懒了。这次会改。尽量2个都照顾到。
3、注释颜色的问题。因为注释和关键字是分别上色的,所以会有这个问题。你看看HTML源代码就知道了。这个可能有点不大好办。不过我试试就是。

我要回去了,这些问题起码要到晚上才能开始着手解决。真的抱歉。

另外,时间不多了,请尽量多测试点。8过因为可以断点的,所以问题应该不是很大(还好没有在这个断点问题上偷懒:))。
雪    币: 32406
活跃值: (18810)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2004-12-31 15:12
22
0
呵~麻烦你这了,这次幸亏你帮忙。

雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
firstrose 16 2005-1-1 00:16
23
0
第1个问题可以了,不过因为有些注释他加了回车,结果注释的一部分无法上色。因为我用的Andrey V. Sorokin写的正则库,这个目前没有办法,除非不用那玩意,自己写HTML parser。这个就要拖时间了。

第2个问题还在想,很讨厌。

程序已经更新了。实在不行就先凑合一下,第2个问题再等等。

注意是以patch形式发的,在永硕。

大不了我再发个道歉,你给置顶!
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
firstrose 16 2005-1-2 02:01
24
0
那个该死的注释颜色已经改正。附带的礼物是速度下降。

如果可以给最原始的文本和模板处理过程,可以做得更好。而且我也会更加轻松。

受不了,去睡了。

有问题赶紧说。我不是魔术师,不可能一下子给出fix。误了精华6的推出我可吃不消。
雪    币: 32406
活跃值: (18810)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2005-1-2 09:15
25
0
谢谢
精华6还得过几天,不影响的。

由于这期论坛精华是4个论坛上的(老001论坛、LB论坛、PHPBB论坛、以及现在的VBB论坛),所以原始数据文本不一样的。我给你的都是最终的样本。

己下载回来,过会全面测试一下,估计不会有什么问题了。;)
游客
登录 | 注册 方可回帖
返回