Mercurial > projects > dil
annotate trunk/src/dil/Messages.d @ 329:17f43b0d6106
- Renamed command highlight to generate.
- Added message HelpGenerate.
- Fix in getShortClassName(): added statement for removing package name.
author | aziz |
---|---|
date | Tue, 21 Aug 2007 19:44:03 +0000 |
parents | a48a987f7515 |
children | 3ac651ea83fb |
rev | line source |
---|---|
54 | 1 /++ |
2 Author: Aziz Köksal | |
249 | 3 License: GPL3 |
54 | 4 +/ |
326 | 5 module dil.Messages; |
327 | 6 import dil.Settings; |
309 | 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, | |
329 | 63 HelpGenerate, |
309 | 64 } |
65 | |
66 string GetMsg(MID mid) | |
67 { | |
68 assert(mid < GlobalSettings.messages.length); | |
69 return GlobalSettings.messages[mid]; | |
70 } | |
71 | |
72 char[] format(MID mid, ...) | |
73 { | |
74 auto args = arguments(_arguments, _argptr); | |
75 return format_args(GetMsg(mid), args); | |
76 } | |
77 | |
78 char[] format(char[] format_str, ...) | |
79 { | |
80 auto args = arguments(_arguments, _argptr); | |
81 return format_args(format_str, args); | |
54 | 82 } |
83 | |
309 | 84 char[] format_args(char[] format_str, char[][] args) |
85 { | |
86 char[] result = format_str; | |
87 | |
88 foreach (i, arg; args) | |
89 result = std.string.replace(result, std.string.format("{%s}", i+1), arg); | |
90 | |
91 return result; | |
92 } | |
86
0459c902a370
- Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents:
81
diff
changeset
|
93 |
309 | 94 char[][] arguments(TypeInfo[] tinfos, void* argptr) |
95 { | |
96 char[][] args; | |
97 foreach (ti; tinfos) | |
98 { | |
99 if (ti == typeid(char[])) | |
100 args ~= va_arg!(char[])(argptr); | |
101 else if (ti == typeid(int)) | |
102 args ~= std.string.format(va_arg!(int)(argptr)); | |
103 else if (ti == typeid(dchar)) | |
104 args ~= std.string.format(va_arg!(dchar)(argptr)); | |
105 else | |
106 assert(0, "argument type not supported yet."); | |
107 } | |
108 return args; | |
109 } |