Mercurial > projects > dil
annotate trunk/src/dil/Messages.d @ 325:540ec3753263
- Moved some source files to src/dil/.
author | aziz |
---|---|
date | Tue, 21 Aug 2007 16:28:05 +0000 |
parents | trunk/src/Messages.d@6259fb93e3dd |
children | 4a7359b88c11 |
rev | line source |
---|---|
54 | 1 /++ |
2 Author: Aziz Köksal | |
249 | 3 License: GPL3 |
54 | 4 +/ |
5 module Messages; | |
309 | 6 import Settings; |
7 import std.stdarg; | |
54 | 8 |
309 | 9 /// Index into table of compiler messages. |
54 | 10 enum MID |
11 { | |
309 | 12 // Lexer messages: |
54 | 13 InvalidUnicodeCharacter, |
14 InvalidUTF8Sequence, | |
15 // '' | |
16 UnterminatedCharacterLiteral, | |
17 EmptyCharacterLiteral, | |
18 // #line | |
19 ExpectedIdentifierSTLine, | |
20 ExpectedNumberAfterSTLine, | |
323 | 21 ExpectedFilespec, |
22 UnterminatedFilespec, | |
54 | 23 UnterminatedSpecialToken, |
24 // "" | |
25 UnterminatedString, | |
26 // x"" | |
27 NonHexCharInHexString, | |
28 OddNumberOfDigitsInHexString, | |
29 UnterminatedHexString, | |
30 // /* */ /+ +/ | |
31 UnterminatedBlockComment, | |
32 UnterminatedNestedComment, | |
33 // `` r"" | |
34 UnterminatedRawString, | |
35 UnterminatedBackQuoteString, | |
36 // \x \u \U | |
37 UndefinedEscapeSequence, | |
38 InsufficientHexDigits, | |
39 // \&[a-zA-Z][a-zA-Z0-9]+; | |
272
0bde32503976
- Added module HtmlEntities. It contains a table for converting HTML entities to Unicode characters.
aziz
parents:
249
diff
changeset
|
40 UndefinedHTMLEntity, |
54 | 41 UnterminatedHTMLEntity, |
42 InvalidBeginHTMLEntity, | |
56
63af7ddf52e1
- Started properly implementing number scanner. Added stub for real numbers.
aziz
parents:
54
diff
changeset
|
43 // integer overflows |
58 | 44 OverflowDecimalSign, |
56
63af7ddf52e1
- Started properly implementing number scanner. Added stub for real numbers.
aziz
parents:
54
diff
changeset
|
45 OverflowDecimalNumber, |
63af7ddf52e1
- Started properly implementing number scanner. Added stub for real numbers.
aziz
parents:
54
diff
changeset
|
46 OverflowHexNumber, |
63af7ddf52e1
- Started properly implementing number scanner. Added stub for real numbers.
aziz
parents:
54
diff
changeset
|
47 OverflowBinaryNumber, |
63af7ddf52e1
- Started properly implementing number scanner. Added stub for real numbers.
aziz
parents:
54
diff
changeset
|
48 OverflowOctalNumber, |
63 | 49 OverflowFloatNumber, |
50 OctalNumberHasDecimals, | |
59
3e594725899a
- Issuing error when no digits were found in hex and binary numbers.
aziz
parents:
58
diff
changeset
|
51 NoDigitsInHexNumber, |
3e594725899a
- Issuing error when no digits were found in hex and binary numbers.
aziz
parents:
58
diff
changeset
|
52 NoDigitsInBinNumber, |
62
96af5653acef
- Fixed loop of hex number scanner. Moved checks under the switch block.
aziz
parents:
59
diff
changeset
|
53 HexFloatExponentRequired, |
96af5653acef
- Fixed loop of hex number scanner. Moved checks under the switch block.
aziz
parents:
59
diff
changeset
|
54 HexFloatMissingExpDigits, |
63 | 55 FloatExponentDigitExpected, |
86
0459c902a370
- Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents:
81
diff
changeset
|
56 |
309 | 57 // Parser messages: |
86
0459c902a370
- Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents:
81
diff
changeset
|
58 ExpectedButFound, |
238
f3c6c15961bb
- Added method peekNext(). Replaced code that used lx.peek() with peekNext().
aziz
parents:
86
diff
changeset
|
59 RedundantStorageClass, |
309 | 60 |
61 // Help messages: | |
62 HelpMain, | |
63 } | |
64 | |
65 string GetMsg(MID mid) | |
66 { | |
67 assert(mid < GlobalSettings.messages.length); | |
68 return GlobalSettings.messages[mid]; | |
69 } | |
70 | |
71 char[] format(MID mid, ...) | |
72 { | |
73 auto args = arguments(_arguments, _argptr); | |
74 return format_args(GetMsg(mid), args); | |
75 } | |
76 | |
77 char[] format(char[] format_str, ...) | |
78 { | |
79 auto args = arguments(_arguments, _argptr); | |
80 return format_args(format_str, args); | |
54 | 81 } |
82 | |
309 | 83 char[] format_args(char[] format_str, char[][] args) |
84 { | |
85 char[] result = format_str; | |
86 | |
87 foreach (i, arg; args) | |
88 result = std.string.replace(result, std.string.format("{%s}", i+1), arg); | |
89 | |
90 return result; | |
91 } | |
86
0459c902a370
- Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents:
81
diff
changeset
|
92 |
309 | 93 char[][] arguments(TypeInfo[] tinfos, void* argptr) |
94 { | |
95 char[][] args; | |
96 foreach (ti; tinfos) | |
97 { | |
98 if (ti == typeid(char[])) | |
99 args ~= va_arg!(char[])(argptr); | |
100 else if (ti == typeid(int)) | |
101 args ~= std.string.format(va_arg!(int)(argptr)); | |
102 else if (ti == typeid(dchar)) | |
103 args ~= std.string.format(va_arg!(dchar)(argptr)); | |
104 else | |
105 assert(0, "argument type not supported yet."); | |
106 } | |
107 return args; | |
108 } |