Mercurial > projects > dil
comparison trunk/src/main.d @ 798:c24be8d4f6ab
Added documentation comments.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Sat, 01 Mar 2008 02:53:06 +0100 |
parents | a7320b7cb7dc |
children | dcd30b0ba711 |
comparison
equal
deleted
inserted
replaced
797:cf2ad5df025c | 798:c24be8d4f6ab |
---|---|
39 import tango.io.File; | 39 import tango.io.File; |
40 import tango.text.Util; | 40 import tango.text.Util; |
41 import tango.time.StopWatch; | 41 import tango.time.StopWatch; |
42 import tango.text.Ascii : icompare; | 42 import tango.text.Ascii : icompare; |
43 | 43 |
44 /// Entry function of dil. | |
44 void main(char[][] args) | 45 void main(char[][] args) |
45 { | 46 { |
46 auto infoMan = new InfoManager(); | 47 auto infoMan = new InfoManager(); |
47 SettingsLoader.SettingsLoader(infoMan).load(); | 48 SettingsLoader.SettingsLoader(infoMan).load(); |
48 if (infoMan.hasInfo) | 49 if (infoMan.hasInfo) |
293 foreach (filePath; filePaths) | 294 foreach (filePath; filePaths) |
294 (new Lexer(new SourceText(filePath, true))).scanAll(); | 295 (new Lexer(new SourceText(filePath, true))).scanAll(); |
295 | 296 |
296 Stdout.formatln("Scanned in {:f10}s.", swatch.stop); | 297 Stdout.formatln("Scanned in {:f10}s.", swatch.stop); |
297 break; | 298 break; |
298 case "parse": | 299 // case "parse": |
299 if (args.length == 3) | 300 // if (args.length == 3) |
300 parse(args[2]); | 301 // parse(args[2]); |
301 break; | 302 // break; |
302 case "?", "help": | 303 case "?", "help": |
303 printHelp(args.length >= 3 ? args[2] : ""); | 304 printHelp(args.length >= 3 ? args[2] : ""); |
304 break; | 305 break; |
305 default: | 306 default: |
306 } | 307 } |
317 text ~= c; | 318 text ~= c; |
318 } | 319 } |
319 return text; | 320 return text; |
320 } | 321 } |
321 | 322 |
323 /// Available commands. | |
322 const char[] COMMANDS = | 324 const char[] COMMANDS = |
323 " compile (c)\n" | 325 " compile (c)\n" |
324 " ddoc (d)\n" | 326 " ddoc (d)\n" |
325 " generate (gen)\n" | 327 " generate (gen)\n" |
326 " help (?)\n" | 328 " help (?)\n" |
380 else | 382 else |
381 return false; | 383 return false; |
382 return true; | 384 return true; |
383 } | 385 } |
384 | 386 |
387 /// Prints the errors collected in infoMan. | |
385 void printErrors(InfoManager infoMan) | 388 void printErrors(InfoManager infoMan) |
386 { | 389 { |
387 foreach (info; infoMan.info) | 390 foreach (info; infoMan.info) |
388 { | 391 { |
389 char[] errorFormat; | 392 char[] errorFormat; |
400 auto err = cast(Problem)info; | 403 auto err = cast(Problem)info; |
401 Stderr.formatln(errorFormat, err.filePath, err.loc, err.col, err.getMsg); | 404 Stderr.formatln(errorFormat, err.filePath, err.loc, err.col, err.getMsg); |
402 } | 405 } |
403 } | 406 } |
404 | 407 |
408 /// Prints the compiler's main help message. | |
405 char[] helpMain() | 409 char[] helpMain() |
406 { | 410 { |
407 auto COMPILED_WITH = __VENDOR__; | 411 auto COMPILED_WITH = __VENDOR__; |
408 auto COMPILED_VERSION = Format("{}.{,:d3}", __VERSION__/1000, __VERSION__%1000); | 412 auto COMPILED_VERSION = Format("{}.{,:d3}", __VERSION__/1000, __VERSION__%1000); |
409 auto COMPILED_DATE = __TIMESTAMP__; | 413 auto COMPILED_DATE = __TIMESTAMP__; |
410 return FormatMsg(MID.HelpMain, VERSION, COMMANDS, COMPILED_WITH, | 414 return FormatMsg(MID.HelpMain, VERSION, COMMANDS, COMPILED_WITH, |
411 COMPILED_VERSION, COMPILED_DATE); | 415 COMPILED_VERSION, COMPILED_DATE); |
412 } | 416 } |
413 | 417 |
418 /// Prints a help message for command. | |
414 void printHelp(char[] command) | 419 void printHelp(char[] command) |
415 { | 420 { |
416 char[] msg; | 421 char[] msg; |
417 switch (command) | 422 switch (command) |
418 { | 423 { |
543 msg = helpMain(); | 548 msg = helpMain(); |
544 } | 549 } |
545 Stdout(msg).newline; | 550 Stdout(msg).newline; |
546 } | 551 } |
547 | 552 |
548 void parse(string fileName) | 553 /+void parse(string fileName) |
549 { | 554 { |
550 auto mod = new Module(fileName); | 555 auto mod = new Module(fileName); |
551 mod.parse(); | 556 mod.parse(); |
552 | 557 |
553 void print(Node[] decls, char[] indent) | 558 void print(Node[] decls, char[] indent) |
558 Stdout.formatln("{}{}: begin={} end={}", indent, decl.classinfo.name, decl.begin ? decl.begin.srcText : "\33[31mnull\33[0m", decl.end ? decl.end.srcText : "\33[31mnull\33[0m"); | 563 Stdout.formatln("{}{}: begin={} end={}", indent, decl.classinfo.name, decl.begin ? decl.begin.srcText : "\33[31mnull\33[0m", decl.end ? decl.end.srcText : "\33[31mnull\33[0m"); |
559 print(decl.children, indent ~ " "); | 564 print(decl.children, indent ~ " "); |
560 } | 565 } |
561 } | 566 } |
562 print(mod.root.children, ""); | 567 print(mod.root.children, ""); |
563 } | 568 }+/ |