我有一个JavaScript functionList解析器可以工作,但是如果括号前面有空格或者函数行中有注释,它就看不到函数:
function parserworks(){
function parserfails (){
function parserfails(){//comments make the parsing fail
function parserfails ( v1:int; v2:byte ):int{
如何检测和解析以“function”开头并以“(”结尾的任何单词,所以“foo(v1:int; v2:byte):int //”,无论后面写的是什么(?
这是.xml中的解析定义:
<parser id="js_function" displayName="Javascript" commentExpr="((/\*.*?\*)/|(//.*?$))">
<function
mainExpr="((^|[\s]+|[;\}\.])([_A-Za-z][\w_]*\.)*[_A-Za-z][\w_]*[\s]*[=:]|^|[\s;\}]+)[\s]*function([\s]+[_A-Za-z]?[\w_]*\([^\)\(]*\)|\([^\)\(]*\))[\n\s]*\{"
displayMode="$className->$functionName">
<functionName>
<nameExpr expr="[_A-Za-z][\w_]*[\s]*[=:]|[_A-Za-z]?[\w_]*[\s]*\("/>
<nameExpr expr="[_A-Za-z]?[\w_]*"/>
</functionName>
<className>
<nameExpr expr="([_A-Za-z][\w_]*\.)*[_A-Za-z][\w_]*\."/>
<nameExpr expr="([_A-Za-z][\w_]*\.)*[_A-Za-z][\w_]*"/>
</className>
</function>
</parser>
答案 0 :(得分:1)
/function.*(\s+\()|(\/\/)/
尝试一下