Added detection for clang compiler and fixed various warnings triggered by it (
bug 4878, r=dvander).
2 using System.Collections.Generic;
10 static void Main(string[] args)
12 Environment.Exit(SubMain(args));
15 static int SubMain(string[] args)
17 string directory = ".";
18 string template = "template.txt";
19 string outputfile = "output.txt";
22 if (args.Length == 0 || (args.Length == 1 && args[0] == "-h"))
28 for (int i=0; i<args.Length-1; i++)
32 directory = args[i + 1];
37 template = args[i + 1];
42 outputfile = args[i + 1];
52 if (args[i + 1] == "template")
66 DirectoryInfo di = new DirectoryInfo(directory);
67 FileInfo[] rgFiles = di.GetFiles("*.inc");
69 ParseWriter pwr = new ParseWriter();
71 foreach (FileInfo fi in rgFiles)
75 Console.Write("Parsing file: " + fi.ToString() + "... ");
79 inc = new IncParser(fi.FullName);
81 catch (ParseException e)
83 Console.WriteLine("Initial browsing failed: " + e.Message);
86 catch (System.Exception e)
88 Console.WriteLine("Failed to read file: " + e.Message);
96 catch (System.Exception e)
98 Console.WriteLine("Error parsing file (line " + inc.GetLineNumber() + "): " + e.Message);
104 Console.WriteLine("Fatal parse error detected; unable to complete output.");
108 Console.WriteLine("Complete!");
111 pwr.WriteFiles(template, outputfile);
113 Console.WriteLine("Parsing Complete!");
120 inc = new IncParser(file);
122 catch (ParseException e)
124 Console.WriteLine("Initial browsing failed: " + e.Message);
127 catch (System.Exception e)
129 Console.WriteLine("Failed to read file: " + e.Message);
133 ParseWriter pw = new ParseWriter();
139 catch (System.Exception e)
141 Console.WriteLine("Error parsing file (line " + inc.GetLineNumber() + "): " + e.Message);
147 Console.WriteLine("Fatal parse error detected; unable to complete output.");
151 Console.Write(pw.Contents);
157 static void PrintHelp()
159 Console.WriteLine("SourcePawn include file parser by BAILOPAN (edited by pRED*)");
161 Console.WriteLine("This can parse a single file into SMC configuration format or an entire directory into a template file if -f is not specified (current directory is used if -d is not specified)");
163 Console.WriteLine("Parameters:");
165 Console.WriteLine("-f <filename> - Specify an input file to be used");
166 Console.WriteLine("-d <path> - Specify a directory to parse (only *.inc files are used)");
167 Console.WriteLine("-t <filename> - Specify a template file to be used");
168 Console.WriteLine("-o <filename> - Specify an output file to be used");
169 Console.WriteLine("-h - Display this help");
170 Console.WriteLine("-h template - Displays help about templates");
173 static void PrintTemplateHelp()
175 Console.WriteLine("Template File Help:");
176 Console.WriteLine("The inc parser can read a template file and replace variables with the outputs of it's parse and write into the output file");
178 Console.WriteLine("Variables:");
180 Console.WriteLine("$defines $enums $enumtypes $forwards $natives $stocks $funcenums $functags $structs");