Mercurial > projects > dil
changeset 9:5d6968cc751e
- Parsing string and character literals now (rudimentary implementation.)
author | aziz |
---|---|
date | Sat, 23 Jun 2007 07:46:00 +0000 |
parents | d4ba94a5a282 |
children | 3ee65d6e39c9 |
files | trunk/src/Lexer.d trunk/src/Token.d trunk/src/format.css trunk/src/main.d |
diffstat | 4 files changed, 40 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/Lexer.d Fri Jun 22 20:41:04 2007 +0000 +++ b/trunk/src/Lexer.d Sat Jun 23 07:46:00 2007 +0000 @@ -151,6 +151,35 @@ } } + if (c == '"') + { + do { + c = *++p; + if (c == 0) + throw new Error("unterminated string literal."); + if (c == '\\') + ++p; + } while (c != '"') + ++p; + t.type = TOK.String; + t.end = p; + return; + } + + if (c == '\'') + { + do { + c = *++p; + if (c == 0) + throw new Error("unterminated character literal."); + if (c == '\\') + ++p; + } while (c != '\'') + ++p; + t.type = TOK.Character; + t.end = p; + return; + } c = *++p; } }
--- a/trunk/src/Token.d Fri Jun 22 20:41:04 2007 +0000 +++ b/trunk/src/Token.d Sat Jun 23 07:46:00 2007 +0000 @@ -15,6 +15,8 @@ Identifier, Whitespace, Comment, + String, + Character, EOF }
--- a/trunk/src/format.css Fri Jun 22 20:41:04 2007 +0000 +++ b/trunk/src/format.css Sat Jun 23 07:46:00 2007 +0000 @@ -5,4 +5,6 @@ font-size: 0.8em; } c { color: green; } -i { color: darkblue;} \ No newline at end of file +i { color: darkblue; } +sl { color: red; } +cl { color: purple; } \ No newline at end of file
--- a/trunk/src/main.d Fri Jun 22 20:41:04 2007 +0000 +++ b/trunk/src/main.d Sat Jun 23 07:46:00 2007 +0000 @@ -49,6 +49,12 @@ case TOK.Comment: writef("<c>%s</c>", span); break; + case TOK.String: + writef("<sl>%s</sl>", span); + break; + case TOK.Character: + writef("<cl>%s</cl>", span); + break; default: } end = token.end;