Hello everyone!
I'm trying to write a regular expression to capture VB6 function
definitions and I'm abit stuck. The rules are:
Function header:
* Must contain the words SUB or FUNCTION
* May contain the words PUBLIC or PRIVATE
* May NOT contain the word DECLARE
* Ends at the first newline that is not preceded by an underscore (_)
followed by a space.
Function footer
* Must contain the words END FUNCTION or END SUB only
Function exit:
* Must contain the words EXIT FUNCTION or EXIT SUB only
The idea is that I want to insert some logging code after each
function header and some logging code before each exit or end. So what
I need is a regex that would capture whole functions with groups for:
* Whole function header
* Function name
* Function parameter list
So far I've come up with
(?:^\s*(?:publi c|private){0,1} \s(?:sub|functi on)\s) (?<FunctionName >[\w
\d]+) (?<FunctionArgs >(?:\s*.*_\s$)* (?:\s*.*$) | (?:.*$)) # FUNCTION
HEADER
and
(^\s*(?:end|exi t)\s(?:sub|func tion)).*$ # FUNCTION FOOTER
but I don't really know how to combine them to get the complete
function back with the exits and ends tagged properly.
Could someone plese help me out with some tips?
Regards,
I'm trying to write a regular expression to capture VB6 function
definitions and I'm abit stuck. The rules are:
Function header:
* Must contain the words SUB or FUNCTION
* May contain the words PUBLIC or PRIVATE
* May NOT contain the word DECLARE
* Ends at the first newline that is not preceded by an underscore (_)
followed by a space.
Function footer
* Must contain the words END FUNCTION or END SUB only
Function exit:
* Must contain the words EXIT FUNCTION or EXIT SUB only
The idea is that I want to insert some logging code after each
function header and some logging code before each exit or end. So what
I need is a regex that would capture whole functions with groups for:
* Whole function header
* Function name
* Function parameter list
So far I've come up with
(?:^\s*(?:publi c|private){0,1} \s(?:sub|functi on)\s) (?<FunctionName >[\w
\d]+) (?<FunctionArgs >(?:\s*.*_\s$)* (?:\s*.*$) | (?:.*$)) # FUNCTION
HEADER
and
(^\s*(?:end|exi t)\s(?:sub|func tion)).*$ # FUNCTION FOOTER
but I don't really know how to combine them to get the complete
function back with the exits and ends tagged properly.
Could someone plese help me out with some tips?
Regards,
Comment