Ignore:
Timestamp:
Sep 20, 2012, 3:30:53 PM (8 years ago)
Author:
sam
Message:

vslol: more robust error checking.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/vslol/MenuGenerateCompilers.cs

    r1934 r1936  
    9595            cmd.WriteToOutputPane("------ Build started: Generating Compilers ------\n");
    9696
    97             int scanner_count = 0, parser_count = 0;
     97            int scanner_count = 0, parser_count = 0, error_count = 0;
    9898
    9999            foreach (Project project in cmd.projects)
    100100            {
    101                 cmd.WriteToOutputPane("Project " + project.FullName + "\n");
     101                cmd.WriteToOutputPane("Project " + project.Name + "\n");
    102102
    103103                string project_path = Path.GetDirectoryName(project.FullName);
     
    129129                    if (item.Name.EndsWith("-scanner.l"))
    130130                    {
    131                         cmd.WriteToOutputPane("   flex.exe " + filename + "\n");
     131                        cmd.WriteToOutputPane("flex.exe " + filename + "\n");
    132132
    133133                        string basename = Path.GetFileName(filename.Substring(0, filename.LastIndexOf("-scanner.l")));
    134                         cmd.Run(project_path,
    135                                 flex_path + "\\bin\\flex.exe",
    136                                 "-v -o "
    137                                  + "generated/" + basename + "-scanner.cpp "
    138                                  + filename,
    139                                 "");
     134                        if (!cmd.Run(project_path,
     135                                     flex_path + "\\bin\\flex.exe",
     136                                     "-v -o "
     137                                      + "generated/" + basename + "-scanner.cpp "
     138                                      + filename,
     139                                     ""))
     140                            ++error_count;
    140141
    141142                        ++scanner_count;
     
    144145                    if (item.Name.EndsWith("-parser.y"))
    145146                    {
    146                         cmd.WriteToOutputPane("   bison.exe " + filename + "\n");
     147                        cmd.WriteToOutputPane("bison.exe " + filename + "\n");
    147148
    148149                        string basename = Path.GetFileName(filename.Substring(0, filename.LastIndexOf("-parser.y")));
    149                         cmd.Run(project_path,
    150                                 bison_path + "\\bin\\bison.exe",
    151                                 "-v -o "
    152                                  + "generated/" + basename + "-parser.cpp "
    153                                  + "--defines=generated/" + basename + "-parser.h "
    154                                  + "-d "
    155                                  + "-b "
    156                                  + "generated/" + basename + " "
    157                                  + filename,
    158                                 "BISON_PKGDATADIR=" + bison_path + "\\share\\bison");
     150                        if (!cmd.Run(project_path,
     151                                     bison_path + "\\bin\\bison.exe",
     152                                     "-v -o "
     153                                      + "generated/" + basename + "-parser.cpp "
     154                                      + "--defines=generated/" + basename + "-parser.h "
     155                                      + "-d "
     156                                      + "-b "
     157                                      + "generated/" + basename + " "
     158                                      + filename,
     159                                     "BISON_PKGDATADIR=" + bison_path + "\\share\\bison"))
     160                            ++error_count;
    159161
    160162                        ++parser_count;
     
    163165            }
    164166
    165             cmd.WriteToOutputPane(string.Format("========== Done. {0} scanner(s), {1} parser(s) ==========\n",
    166                                   scanner_count, parser_count));
    167         }
    168 
    169         void Run(string directory, string executable, string arguments, string env)
     167            cmd.WriteToOutputPane(string.Format("========== Done: {0} scanner(s), {1} parser(s), {2} error(s) ==========\n",
     168                                  scanner_count, parser_count, error_count));
     169        }
     170
     171        bool Run(string directory, string executable, string arguments, string env)
    170172        {
    171173            System.Diagnostics.Process p = new System.Diagnostics.Process();
     
    194196                WriteToOutputPane(output);
    195197                if (p.ExitCode != 0)
     198                {
    196199                    WriteToOutputPane("Error: " + executable + " exited with code " + p.ExitCode + "\n");
     200                    return false;
     201                }
    197202            }
    198203            catch (Exception e)
    199204            {
    200205                WriteToOutputPane("Error: failed to launch " + executable + "\n");
    201             }
     206                return false;
     207            }
     208
     209            return true;
    202210        }
    203211
Note: See TracChangeset for help on using the changeset viewer.