NAME
Regexp::Common::comment -- provide regexes for comments.
SYNOPSIS
use Regexp::Common qw /comment/;
while (<>) {
/$RE{comment}{C}/ and print "Contains a C comment\n";
/$RE{comment}{C++}/ and print "Contains a C++ comment\n";
/$RE{comment}{PHP}/ and print "Contains a PHP comment\n";
/$RE{comment}{Java}/ and print "Contains a Java comment\n";
/$RE{comment}{Perl}/ and print "Contains a Perl comment\n";
/$RE{comment}{awk}/ and print "Contains an awk comment\n";
/$RE{comment}{HTML}/ and print "Contains an HTML comment\n";
}
use Regexp::Common qw /comment RE_comment_HTML/;
while (<>) {
$_ =~ RE_comment_HTML() and print "Contains an HTML comment\n";
}
DESCRIPTION
Please consult the manual of Regexp::Common for a general description of the works of this interface.
Do not use this module directly, but load it via Regexp::Common.
This modules gives you regular expressions for comments in various languages.
Available languages are:
$RE{comment}{Ada}
$RE{comment}{ALPACA}
$RE{comment}{awk}
$RE{comment}{'beta-Juliet'}
$RE{comment}{Beatnik} # Require at least Perl 5.8.0
$RE{comment}{'Befunge-98'}
$RE{comment}{Brainfuck}
$RE{comment}{C}
$RE{comment}{'C++'}
$RE{comment}{Dylan} # Require at least Perl 5.6.0.
$RE{comment}{Eiffel}
$RE{comment}{FPL}
$RE{comment}{'Funge-98'}
$RE{comment}{Haifu}
$RE{comment}{Haskell} # Require at least Perl 5.6.0.
$RE{comment}{HTML}
$RE{comment}{Hugo} # Require at least Perl 5.6.0.
$RE{comment}{ILLGOL}
$RE{comment}{Java}
$RE{comment}{LaTeX}
$RE{comment}{LOGO}
$RE{comment}{LPC}
$RE{comment}{lua}
$RE{comment}{Perl}
$RE{comment}{PHP}
$RE{comment}{Portia}
$RE{comment}{Python}
$RE{comment}{'Q-BAL'}
$RE{comment}{REBOL}
$RE{comment}{Ruby}
$RE{comment}{shell}
$RE{comment}{Shelta}
$RE{comment}{Smalltalk}
$RE{comment}{SMITH}
$RE{comment}{SQL}
$RE{comment}{SQL}{MySQL}
$RE{comment}{Tcl}
$RE{comment}{TeX}
$RE{comment}{troff}
$RE{comment}{vi}
$RE{comment}{'*W'}
$RE{comment}{zonefile}
$RE{comment}{vi}
is a regular expression matching comments used in vi's startup file .exrc, while $RE{comment}{zonefile}
is a regular expression matching comments in zonefiles for bind.
For HTML, the regular expression captures what's known in SGML as a comment declaration. It starts with a <!
, ends with a >
and contains zero or more comments. Each comment starts and end with --
. See also [Go 90].
Note that Beatnik uses capturing parenthesis, even if {-keep}
is not used.
If we are using C{-keep} (See Regexp::Common):
- For Ada, ALPACA, awk, beta-Juliet, Befunge-98, C, Eiffel, Funge-98, Haifu, ILLGOL, LaTeX, LOGO, LPC, lua, Perl, Portia, Python, Q-BAL, REBOL, Ruby, shell, Shelta, Smalltalk, SMITH, SQL, TeX, Tcl, troff, vi, *W, and zonefile:
- For Beatnik, Brainfuck, C++, Dylan, FPL, Haskell, Hugo, Java, PHP, and SQL_MySQL:
- For HTML
REFERENCES
- [Go 90]
-
Charles F. Goldfarb: The SGML Handbook. Oxford: Oxford University Press. 1990. ISBN 0-19-853737-9. Ch. 10.3, pp 390-391.
HISTORY
$Log: comment.pm,v $
Revision 2.102 2003/02/07 15:23:54 abigail
Lua and FPL
Revision 2.101 2003/02/01 22:55:31 abigail
Changed Copyright years
Revision 2.100 2003/01/21 23:19:40 abigail
The whole world understands RCS/CVS version numbers, that 1.9 is an
older version than 1.10. Except CPAN. Curse the idiot(s) who think
that version numbers are floats (in which universe do floats have
more than one decimal dot?).
Everything is bumped to version 2.100 because CPAN couldn't deal
with the fact one file had version 1.10.
Revision 1.19 2002/11/06 13:51:34 abigail
Minor POD changes.
Revision 1.18 2002/09/18 18:13:01 abigail
Fixes for 5.005
Revision 1.17 2002/09/04 17:04:24 abigail
Q-BAL
Revision 1.16 2002/08/27 16:50:50 abigail
Patterns for Beatnik, Befunge-98, Funge-98 and W*.
Revision 1.15 2002/08/22 17:04:03 abigail
SMITH added
Revision 1.14 2002/08/22 16:41:25 abigail
+ Added function 'id' and 'from_to' with associated data.
+ Added function 'combine' for languages having multiple syntaxes.
+ Added 'Shelta'
Revision 1.13 2002/08/21 16:00:32 abigail
beta-Juliet, Portia, ILLGOL and Brainfuck.
Revision 1.12 2002/08/20 17:40:37 abigail
- Created a 'nested' function (simplified version from
Regexp::Common::balanced).
- Comments that use 'from' to eol or balanced (nested) delimiters
are now generated from a data array.
- Added Hugo and Haifu.
Revision 1.11 2002/08/05 12:16:58 abigail
Fixed 'Regex::' and 'Rexexp::' typos to 'Regexp::'
(Found my Mike Castle).
Revision 1.10 2002/07/31 23:33:16 abigail
Documented that Haskell and Dylan comments need at least 5.6.0.
Revision 1.9 2002/07/31 23:12:29 abigail
Dylan and Haskell comments can be nested, hence version 5.6.0 of Perl
is needed to be able to make a regex matching them.
Revision 1.8 2002/07/31 14:48:16 abigail
Added LOGO (to please petdance)
Revision 1.7 2002/07/31 13:06:41 abigail
Dealt with -keep for Haskell and Dylan.
Revision 1.6 2002/07/31 00:54:00 abigail
Added comments for Haskell, Dylan, Smalltalk and MySQL.
Revision 1.5 2002/07/30 16:38:23 abigail
Added support for the languages: LaTeX, Tcl, TeX and troff.
Revision 1.4 2002/07/26 16:48:12 abigail
Simplied datastructure for the languages that use single line comments.
Revision 1.3 2002/07/26 16:37:20 abigail
Added new languages: Ada, awk, Eiffel, Java, LPC, PHP, Python,
REBOL, Ruby, vi and zonefile.
Revision 1.2 2002/07/25 22:37:44 abigail
Added 'use strict'.
Added 'no_defaults' to 'use Regex::Common' to prevent loaded of all
defaults.
Revision 1.1 2002/07/25 19:56:07 abigail
Modularizing Regexp::Common.
SEE ALSO
Regexp::Common for a general description of how to use this interface.
AUTHOR
Damian Conway (damian@conway.org)
MAINTAINANCE
This package is maintained by Abigail (regexp-common@abigail.nl).
BUGS AND IRRITATIONS
Bound to be plenty.
For a start, there are many common regexes missing. Send them in to regexp-common@abigail.nl.
COPYRIGHT
Copyright (c) 2001 - 2003, Damian Conway. All Rights Reserved.
This module is free software. It may be used, redistributed
and/or modified under the terms of the Perl Artistic License
(see http://www.perl.com/perl/misc/Artistic.html)