annotate trunk/src/dil/Messages.d @ 390:4d36eea1bbc9

Refactored Lexer.scan(). Illegal characters are not ignored anymore. They are reported as errors. Added a new member 'ws' to Token. When a token is scanned the lexer sets ws to the leading whitespace or leaves it at null when no whitespace was found. Added Illegal to enum TOK and IllegalCharacter to enum MID. Added localized messages for MID.IllegalCharacter. Adapted code of cmd.Generate to make use of Token.ws.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Wed, 12 Sep 2007 21:03:41 +0200
parents c4bfceab7246
children 33b566df6af4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
54
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
1 /++
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
2 Author: Aziz Köksal
249
32d354584b28 - Upgraded license notices to GPL3.
aziz
parents: 238
diff changeset
3 License: GPL3
54
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
4 +/
326
4a7359b88c11 - Added package 'dil' to module declarations.
aziz
parents: 325
diff changeset
5 module dil.Messages;
327
a48a987f7515 - Added package dil to import declarations.
aziz
parents: 326
diff changeset
6 import dil.Settings;
309
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
7 import std.stdarg;
54
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
8
309
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
9 /// Index into table of compiler messages.
54
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
10 enum MID
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
11 {
309
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
12 // Lexer messages:
390
4d36eea1bbc9 Refactored Lexer.scan().
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 389
diff changeset
13 IllegalCharacter,
54
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
14 InvalidUnicodeCharacter,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
15 InvalidUTF8Sequence,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
16 // ''
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
17 UnterminatedCharacterLiteral,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
18 EmptyCharacterLiteral,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
19 // #line
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
20 ExpectedIdentifierSTLine,
388
ae154eceba65 Applied some fixes to scanning and printing #line tokens.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 375
diff changeset
21 ExpectedIntegerAfterSTLine,
323
6259fb93e3dd - Rewrote scanSpecialToken().
aziz
parents: 309
diff changeset
22 ExpectedFilespec,
6259fb93e3dd - Rewrote scanSpecialToken().
aziz
parents: 309
diff changeset
23 UnterminatedFilespec,
54
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
24 UnterminatedSpecialToken,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
25 // ""
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
26 UnterminatedString,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
27 // x""
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
28 NonHexCharInHexString,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
29 OddNumberOfDigitsInHexString,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
30 UnterminatedHexString,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
31 // /* */ /+ +/
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
32 UnterminatedBlockComment,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
33 UnterminatedNestedComment,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
34 // `` r""
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
35 UnterminatedRawString,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
36 UnterminatedBackQuoteString,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
37 // \x \u \U
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
38 UndefinedEscapeSequence,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
39 InsufficientHexDigits,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
40 // \&[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
41 UndefinedHTMLEntity,
54
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
42 UnterminatedHTMLEntity,
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
43 InvalidBeginHTMLEntity,
56
63af7ddf52e1 - Started properly implementing number scanner. Added stub for real numbers.
aziz
parents: 54
diff changeset
44 // integer overflows
58
50bb7fc9db44 - The types of integers are recognized now.
aziz
parents: 56
diff changeset
45 OverflowDecimalSign,
56
63af7ddf52e1 - Started properly implementing number scanner. Added stub for real numbers.
aziz
parents: 54
diff changeset
46 OverflowDecimalNumber,
63af7ddf52e1 - Started properly implementing number scanner. Added stub for real numbers.
aziz
parents: 54
diff changeset
47 OverflowHexNumber,
63af7ddf52e1 - Started properly implementing number scanner. Added stub for real numbers.
aziz
parents: 54
diff changeset
48 OverflowBinaryNumber,
63af7ddf52e1 - Started properly implementing number scanner. Added stub for real numbers.
aziz
parents: 54
diff changeset
49 OverflowOctalNumber,
63
c29229fbf2f7 - Recognizing floats that start with a dot.
aziz
parents: 62
diff changeset
50 OverflowFloatNumber,
c29229fbf2f7 - Recognizing floats that start with a dot.
aziz
parents: 62
diff changeset
51 OctalNumberHasDecimals,
59
3e594725899a - Issuing error when no digits were found in hex and binary numbers.
aziz
parents: 58
diff changeset
52 NoDigitsInHexNumber,
3e594725899a - Issuing error when no digits were found in hex and binary numbers.
aziz
parents: 58
diff changeset
53 NoDigitsInBinNumber,
62
96af5653acef - Fixed loop of hex number scanner. Moved checks under the switch block.
aziz
parents: 59
diff changeset
54 HexFloatExponentRequired,
389
c4bfceab7246 Applied fixes and improvements to hex float scanner.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 388
diff changeset
55 HexFloatExpMustStartWithDigit,
c4bfceab7246 Applied fixes and improvements to hex float scanner.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 388
diff changeset
56 FloatExpMustStartWithDigit,
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 81
diff changeset
57
309
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
58 // Parser messages:
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 81
diff changeset
59 ExpectedButFound,
238
f3c6c15961bb - Added method peekNext(). Replaced code that used lx.peek() with peekNext().
aziz
parents: 86
diff changeset
60 RedundantStorageClass,
341
3ac651ea83fb - Fix: created TemplateAliasParameter instead of TemplateTypeParameter.
aziz
parents: 329
diff changeset
61 TemplateTupleParameter,
342
f13d551d7c4f - Added error messages MID.InContract and MID.OutContract.
aziz
parents: 341
diff changeset
62 InContract,
f13d551d7c4f - Added error messages MID.InContract and MID.OutContract.
aziz
parents: 341
diff changeset
63 OutContract,
359
511c14950cac - Added messages MissingLinkageType and UnrecognizedLinkageType.
aziz
parents: 342
diff changeset
64 MissingLinkageType,
511c14950cac - Added messages MissingLinkageType and UnrecognizedLinkageType.
aziz
parents: 342
diff changeset
65 UnrecognizedLinkageType,
309
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
66
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
67 // Help messages:
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
68 HelpMain,
329
17f43b0d6106 - Renamed command highlight to generate.
aziz
parents: 327
diff changeset
69 HelpGenerate,
375
0bd21b746a04 - Added code to main() for recognizing options to the importgraph command.
aziz
parents: 359
diff changeset
70 HelpImportGraph,
309
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
71 }
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
72
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
73 string GetMsg(MID mid)
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
74 {
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
75 assert(mid < GlobalSettings.messages.length);
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
76 return GlobalSettings.messages[mid];
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
77 }
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
78
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
79 char[] format(MID mid, ...)
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
80 {
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
81 auto args = arguments(_arguments, _argptr);
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
82 return format_args(GetMsg(mid), args);
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
83 }
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
84
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
85 char[] format(char[] format_str, ...)
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
86 {
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
87 auto args = arguments(_arguments, _argptr);
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
88 return format_args(format_str, args);
54
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
89 }
e55bd2270f94 - Relocated messages table to a separate module.
aziz
parents:
diff changeset
90
309
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
91 char[] format_args(char[] format_str, char[][] args)
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
92 {
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
93 char[] result = format_str;
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
94
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
95 foreach (i, arg; args)
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
96 result = std.string.replace(result, std.string.format("{%s}", i+1), arg);
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
97
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
98 return result;
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
99 }
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 81
diff changeset
100
309
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
101 char[][] arguments(TypeInfo[] tinfos, void* argptr)
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
102 {
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
103 char[][] args;
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
104 foreach (ti; tinfos)
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
105 {
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
106 if (ti == typeid(char[]))
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
107 args ~= va_arg!(char[])(argptr);
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
108 else if (ti == typeid(int))
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
109 args ~= std.string.format(va_arg!(int)(argptr));
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
110 else if (ti == typeid(dchar))
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
111 args ~= std.string.format(va_arg!(dchar)(argptr));
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
112 else
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
113 assert(0, "argument type not supported yet.");
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
114 }
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
115 return args;
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 272
diff changeset
116 }