From 63a7c90e365874972925e886ed50941f5620bdfe Mon Sep 17 00:00:00 2001 From: fche Date: Fri, 3 Jun 2005 15:54:47 +0000 Subject: 2005-06-03 Frank Ch. Eigler * parse.cxx (scan): Support C and C++ comment styles. * testsuite/parseok/four.stp: Test them some ... * testsuite/parseko/nine.stp: ... and some more. --- parse.cxx | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'parse.cxx') diff --git a/parse.cxx b/parse.cxx index a117d1bc..2e350b4d 100644 --- a/parse.cxx +++ b/parse.cxx @@ -253,13 +253,33 @@ lexer::scan () { int c2 = input.peek (); - if (c == '#') // comment to end-of-line + if (c == '#') // shell comment { unsigned this_line = cursor_line; while (input && cursor_line == this_line) input_get (); goto skip; } + else if (c == '/' && c2 == '/') // C++ comment + { + unsigned this_line = cursor_line; + while (input && cursor_line == this_line) + input_get (); + goto skip; + } + else if (c == '/' && c2 == '*') // C comment + { + c2 = input_get (); + unsigned chars = 0; + while (input) + { + chars ++; // track this to prevent "/*/" from being accepted + c = c2; + c2 = input_get (); + if (chars > 1 && c == '*' && c2 == '/') + goto skip; + } + } n->type = tok_operator; n->content = (char) c; -- cgit