<%
'************************************************************
'*
'* 程序名称:ASP代码分析器
'*
'* 很遗憾,这个东西才写了不到一半。
'* 完成的只是将ASP分析成XML部份,而生成真正流程图部份由于本人的程序
'* 基础不过关。实在是力不从心,现在公布出来这点东西,希望有志人事将它
'* 完成,如果对这篇代码有什么问题或是有什么好的想法可以和我联系一下。
'* 也可以讨论一下如何更好的通过生成的XML生成完美的流程图。
'*
'* 生成XML这段东西也比较生硬,语法分析部份还有很多的缺陷,容错和分析
'* 能力还比较弱,如果真的要去作的话。
'* Private函数还要作进一步的休整。
'*
'* 而生成图形的Class我只作了第一层的显示。
'* 关键难点是如何在无限制镶嵌的流程语句中生成正确的流程图来。
'*
'* 如果有办法生成流程语句的结构图,那子程序(class/function/sub等)里
'* 的编码可以直接交给这个函数处理生成合理的全布结构流程图。
'*
'* 本篇代码作者:Coder / coder@ / http://coder.
'* 2003-09-02 15:03
'*
'************************************************************
'************************************************************
'*
'* 读取ASP原码,然后分析成XML文件。
'*
'************************************************************
class Dissect_ASP
private blnFile '文件无ASP代码
private Dissect '结果文集
Private sub Class_Initialize()
blnFile =false
end sub
'*************************************************************
'*
'* 导入文件内容然后分出代码区并生成第一层代码,需要的参数:分析文件的代码(FileData)
'*
'*************************************************************
public function LoadFile(byval FileData)
dim aryFileData
dim intUbound
dim fIndex
dim strASP '纯ASP代码
dim intASP '% >所在位置
dim strHTML
aryFileData=split(FileData,"<" & "%")
intUbound=ubound(aryFileData)
if intUbound=0 then
LoadFile="该文件无ASP代码,无法进行分析。"
exit function
end if
if aryFileData(0)<>"" then
Dissect=Dissect & shift_html(aryFileData(0))
end if
for fIndex=1 to intUbound
intASP=instr(aryFileData(fIndex),"%" & ">") '读取本块ASP代码块的结尾位置
strASP=left(aryFileData(fIndex),intASP-1) '截取纯ASP代码
if left(strASP,1)="=" then
'如果< %后面第一个字符是=号,则表达该ASP块为单行显示代码
Dissect=Dissect & "<asp_code> "&_
right(strASP,len(strASP)-1) &_
"</asp_code>"
else
'处理多行ASP代码
Dissect=Dissect & lcase(Dissect_code(shift_html(strASP))) & vbclrf
end if
ASP代码分析器 来自淘豆网m.daumloan.com转载请标明出处.