/\d[\w.]*|[\w\$]+|'(?:\\?.)*'|"(?:\\?.)*"|\/\*(?s:.*?)\*\/|\/\/.*|\/(?:\\?.)*\/[a-z]*|\+\+|\-\-|[\n\S]/g
####
while(/(\d[\w.]*|[\w\$]+|'(?:\\?.)*'|"(?:\\?.)*"|\/\*(?s:.*?)\*\/|\/\/.*|\/(?:\\?.)*\/[a-z]*|\+\+|\-\-|[\n\S])/g) {
unless($1 eq "\n") {
print "Token: $1\n";
} else {
print "Newline\n";
}
}
####
my $level = 0;
while(/(\d[\w.]*|[\w\$]+|'(?:\\?.)*'|"(?:\\?.)*"|\/\*(?s:.*?)\*\/|\/\/.*|\/(?:\\?.)*\/[a-z]*|\+\+|\-\-|[\n\S])/g) {
if($1 eq "\n") {
print "Newline\n";
} elsif(grep $1 eq $_, '(', '{', '[') {
print "Token: $1 level $level\n";
$level++;
} elsif(grep $1 eq $_, ')', '}', ']') {
$level--;
print "Token: $1 level $level\n";
print "Found the end of a top level block\n" if $level==0;
} else {
print "Token: $1\n";
}
}