regex for C comments

Theodore Stevens Norvell norvell at csri.toronto.edu
Mon Feb 1 19:28:53 AEST 2016


In article <502 at chem.ucsd.EDU> tps at chem.ucsd.edu (Tom Stockfisch) writes:
>In article <19365 at paris.ics.uci.edu> schmidt at zola.ics.uci.edu (Doug Schmidt) writes:
>>In their book ``Introduction to Compiler Construction with UNIX,''
>>Schreiner and Friedman provide the following LEX regular expression
>>for recognizing C comments:
>>"/*""/"*([^*/]|[^*]"/"|"*"[^/])*"*"*"*/"
>
>This expression fails on each of the following:
>
>	/*****//hello world */
Is that really a C comment?  I think only the first 7 characters are.
>
>
>So, who has the shortest single LEX expression that correctly
>matches C comments --
>ignoring string and character constants,
>and disallowing start conditions?
>
>Mine is
>
>	"/*"\/*([^/]|{[^*/]\/+})*"*/"

        \/\*([^*]*\*+[^*/])*\*+\/

or more legibly

	"/*" ( [^*] "*"+ [^*/] )* "*"+ "/"

Though I haven't proved it.

Theo Norvell     U of Toronto



More information about the Comp.lang.c mailing list