diff options
author | Arne Georg Gleditsch <argggh@taniquetil.(none)> | 2009-08-17 08:52:04 +0200 |
---|---|---|
committer | Arne Georg Gleditsch <argggh@taniquetil.(none)> | 2009-08-17 08:52:04 +0200 |
commit | 7f5d4f37d8d3240b8c3a91be79c0585e6ca8a9d4 (patch) | |
tree | f2f78cd7073fbf6a2dc238114e9fe834b40b9959 /lib/LXRng/Lang/C.pm | |
parent | 18bbb85315b190ccf5698fab3a39b576e7a2dbcd (diff) |
Handle embedded escaped string-terminators.
Diffstat (limited to 'lib/LXRng/Lang/C.pm')
-rw-r--r-- | lib/LXRng/Lang/C.pm | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/LXRng/Lang/C.pm b/lib/LXRng/Lang/C.pm index db3a204..892e104 100644 --- a/lib/LXRng/Lang/C.pm +++ b/lib/LXRng/Lang/C.pm @@ -67,8 +67,9 @@ sub parsespec { return ['atom', '\\\\.', undef, 'comment', '/\*', '\*/', 'comment', '//', "\$", - 'string', '"', '"', - 'string', "'", "'", + 'string', '"(?:[^\\\\]*\\\\.)*[^\\\\]*"', undef, + 'string', "'(?:[^\\\\]*\\\\.)*[^\\\\]*'", undef, + 'atom', '#\s*(?:ifn?def|define|else|endif|undef)', undef, 'include', '#\s*include\s+"', '"', 'include', '#\s*include\s+<', '>']; } @@ -85,8 +86,8 @@ sub markuphandlers { qr/[^\n]+/ => sub { $markup->format_comment(@_) }; $subst{'string'} = new Subst::Complex - qr/\n/ => $format_newline, - qr/[^\n\"\']+/ => sub { $markup->format_string(@_) }; + qr/\n/ => $format_newline, + qr/[^\n]+/ => sub { $markup->format_string(@_) }; $subst{'include'} = new Subst::Complex qr/\n/ => $format_newline, |