in reply to need to recognize string literals and ignore then during parsing.
For example, given the code:
my $foo = "foo's $bar";first, look for a string opening token (like qw/" ' qq. qr. q. qx./):
my $foo = "foo's $bar"; ^
Then look for a corresponding close token (in this case /(?<[^\\])"/ to find the other end.
my $foo = "foo's $bar"; ^---------->
Mark that part as a string. On a second pass, you might want to look for variables inside each string tag using $text->tagNextrange. (or the ones that evaluate "", qq//, etc)
At the end, you end up with something like the following (ignoring whitespace):
<perlcode> <reserved>my</reserved> <variable>$foo</variable> <operator>=</operator> <string>"foo's <variable>$bar</variable>"</string>; </perlcode>
I hope you got the idea.
|
|---|