Mercurial > projects > dil
annotate trunk/src/dil/Messages.d @ 359:511c14950cac
- Added messages MissingLinkageType and UnrecognizedLinkageType.
- Changed enum Linkage into a class.
- Added method parseLinkage() to Parser.
- Added MAX to enum TOK.
- Added methods nextNWS() and prevNWS() to Token.
- Fixed tokToString table.
author | aziz |
---|---|
date | Tue, 28 Aug 2007 11:41:00 +0000 |
parents | f13d551d7c4f |
children | 0bd21b746a04 |
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, |
341
3ac651ea83fb
- Fix: created TemplateAliasParameter instead of TemplateTypeParameter.
aziz
parents:
329
diff
changeset
|
60 TemplateTupleParameter, |
342
f13d551d7c4f
- Added error messages MID.InContract and MID.OutContract.
aziz
parents:
341
diff
changeset
|
61 InContract, |
f13d551d7c4f
- Added error messages MID.InContract and MID.OutContract.
aziz
parents:
341
diff
changeset
|
62 OutContract, |
359
511c14950cac
- Added messages MissingLinkageType and UnrecognizedLinkageType.
aziz
parents:
342
diff
changeset
|
63 MissingLinkageType, |
511c14950cac
- Added messages MissingLinkageType and UnrecognizedLinkageType.
aziz
parents:
342
diff
changeset
|
64 UnrecognizedLinkageType, |
309 | 65 |
66 // Help messages: | |
67 HelpMain, | |
329 | 68 HelpGenerate, |
309 | 69 } |
70 | |
71 string GetMsg(MID mid) | |
72 { | |
73 assert(mid < GlobalSettings.messages.length); | |
74 return GlobalSettings.messages[mid]; | |
75 } | |
76 | |
77 char[] format(MID mid, ...) | |
78 { | |
79 auto args = arguments(_arguments, _argptr); | |
80 return format_args(GetMsg(mid), args); | |
81 } | |
82 | |
83 char[] format(char[] format_str, ...) | |
84 { | |
85 auto args = arguments(_arguments, _argptr); | |
86 return format_args(format_str, args); | |
54 | 87 } |
88 | |
309 | 89 char[] format_args(char[] format_str, char[][] args) |
90 { | |
91 char[] result = format_str; | |
92 | |
93 foreach (i, arg; args) | |
94 result = std.string.replace(result, std.string.format("{%s}", i+1), arg); | |
95 | |
96 return result; | |
97 } | |
86
0459c902a370
- Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents:
81
diff
changeset
|
98 |
309 | 99 char[][] arguments(TypeInfo[] tinfos, void* argptr) |
100 { | |
101 char[][] args; | |
102 foreach (ti; tinfos) | |
103 { | |
104 if (ti == typeid(char[])) | |
105 args ~= va_arg!(char[])(argptr); | |
106 else if (ti == typeid(int)) | |
107 args ~= std.string.format(va_arg!(int)(argptr)); | |
108 else if (ti == typeid(dchar)) | |
109 args ~= std.string.format(va_arg!(dchar)(argptr)); | |
110 else | |
111 assert(0, "argument type not supported yet."); | |
112 } | |
113 return args; | |
114 } |