Browse thread
[Caml-list] O'Caml looks at the contents of comments?!
-
Jim Farrand
- Stephane Legrand
- skaller
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | skaller <skaller@o...> |
| Subject: | Re: [Caml-list] O'Caml looks at the contents of comments?! |
On Sat, 2003-09-13 at 20:45, Jim Farrand wrote: > I've spent a long time puzzling over a "string not terminated" error > which was being reported inside a class I'm writing. Camlp4r reported > the error just as being somewhere in the class (i.e. Line 267 character > 4 - 1076) which gave me quite a bit of code to look over. I spent a > long while staring at the code quite puzzled because I couldn't see an > unterminated string anywhere. > > Eventually I started commenting out bits of code, and I was even more > confused when I'd commented out the entire class and STILL got the > error. > > Eventually I traced the error to an unterminated string inside a > comment. This strikes me as slightly odd behaviour - one of the first > things comp sci students are taught about comments is that the compiler > ignores them. As this has been my experience for many years it took me > a long time to even consider that I could have a syntax error inside a > comment. > > So why is this restriction enforced? > The reason is: Ocaml comments are designed to be able to comment out code. If you consider the code: " (* " ^ x and comment out the first part like this: (* " (* " ^ *) x it wouldn't work unless the (* in the string was detected as being inside a string and ignored. The contents of comments are not ignored, in the sense that every lexer even C's, has to find the comment terminator. Bash and C++ comments: # .... // .... do not have this problem, since they're terminated by end of line. Also: Ocaml, wrongly I think, allows strings to span lines. Hmm .. Felix doesn't do the string detection .. which means its nestable /* .. */ comments wont wrap code containing strings containing /* or */ .. Hmmmm .. thanks for raising this issue .. ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners