|
|
|
|
|
by undershirt
3358 days ago
|
|
> Note that string delimiters in Dern are [ and ] and not "; this way dern code can be written inside C-programs without escaping. Interesting approach. I suppose this makes whitespace inside square brackets significant. And quotes inside of these brackets would have to be escaped if written inside C-programs. |
|
I took this square-bracket approach as well in my teaching language (http://akkartik.name/post/mu). Benefits:
a) Since there's distinct characters for each end, nesting strings is convenient.
b) Since there's distinct characters for each end, the need for escaping is reduced. (I reduced the need for escaping further by having a backslash escape a whole series of backslashes rather than just the very next character. That way each iteration of escaping increases a run of backslashes by one rather than doubling it.)
c) In the context of a teaching language, I found it useful to pun square brackets for function definitions and strings. That allowed me to explain this:
as a command (def) that takes some primitive arguments and a bit of text, turns it into code and adds it to the list of a computer's functions, somehow. That helps introduce students to the idea of a compiler. (Long before we delve further into it, of course.)The drawback of punning square brackets for function definitions and strings is that in different contexts I want to permit or be oblivious to comments. The rule Mu's lexer uses pervasively is that if the very next character after the '[' is a newline, it's sensitive to comments when detecting nested square brackets to determine where the string ends. This only makes sense because Mu is statement-oriented; every statement is required to start on a new line, and there's no delimiter like a semi-colon to get around that.
Anyways, this is sort of an extended description of a very narrow set of design decisions. Just in case someone finds it useful.