Skip to content

Commit

Permalink
Add -lex-only option so .errors files don't contain duplicate error m…
Browse files Browse the repository at this point in the history
…essages.
  • Loading branch information
kaby76 committed Jul 14, 2023
1 parent d926b68 commit dd1cad5
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 41 deletions.
101 changes: 62 additions & 39 deletions _scripts/templates/CSharp/st.Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ public static IParseTree Parse(string input)
static int exit_code = 0;
static Encoding encoding = null;
static int string_instance = 0;
static bool lex_only = false;
static string prefix = "";
static bool quiet = false;

Expand All @@ -100,7 +101,11 @@ static void Main(string[] args)
List\<string> inputs = new List\<string>();
for (int i = 0; i \< args.Length; ++i)
{
if (args[i] == "-profile")
if (args[i] == "-lex-only")
{
lex_only = true;
}
else if (args[i] == "-profile")
{
show_profile = true;
}
Expand Down Expand Up @@ -224,13 +229,16 @@ static void ParseFilename(string input, int row_number)

static void DoParse(ICharStream str, string input_name, int row_number)
{
var output = tee ? new StreamWriter(input_name + ".errors") : System.Console.Error;
var output = tee ? new StreamWriter(input_name + ".errors") : System.Console.Error;
var lexer = new <lexer_name>(str);
var listener_lexer = new ErrorListener\<int>(quiet, tee, output);
lexer.RemoveErrorListeners();
lexer.AddErrorListener(listener_lexer);
var listener_lexer = new ErrorListener\<int>(quiet, tee, output);
lexer.RemoveErrorListeners();
lexer.AddErrorListener(listener_lexer);
DateTime before = DateTime.Now;
DateTime after = DateTime.Now;
if (show_tokens)
{
before = DateTime.Now;
var output_tokens = tee ? new StreamWriter(input_name + ".token") : System.Console.Error;
for (int i = 0; ; ++i)
{
Expand All @@ -243,47 +251,62 @@ static void DoParse(ICharStream str, string input_name, int row_number)
}
if (tee) output_tokens.Close();
lexer.Reset();
after = DateTime.Now;
}
var tokens = new CommonTokenStream(lexer);
var parser = new <parser_name>(tokens);
var listener_parser = new ErrorListener\<IToken>(quiet, tee, output);
parser.RemoveErrorListeners();
parser.AddErrorListener(listener_parser);
if (show_profile)
{
parser.Profile = true;
}
if (show_trace)
{
parser.Trace = true;
// ParserATNSimulator.trace_atn_sim = true;
}
DateTime before = DateTime.Now;
var tree = parser.<start_symbol>();
DateTime after = DateTime.Now;
var result = "";
if (listener_lexer.had_error || listener_parser.had_error)
if (lex_only)
{
result = "fail";
exit_code = 1;
}
else
{
result = "success";
}
if (show_tree)
{
if (tee)
if (listener_lexer.had_error)
{
System.IO.File.WriteAllText(input_name + ".tree", tree.ToStringTree(parser));
} else
result = "fail";
exit_code = 1;
}
else
{
System.Console.Error.WriteLine(tree.ToStringTree(parser));
result = "success";
}
}
if (show_profile)
{
System.Console.Error.WriteLine(String.Join(",\n\r", parser.ParseInfo.getDecisionInfo().Select(d => d.ToString())));
else {
var tokens = new CommonTokenStream(lexer);
var parser = new <parser_name>(tokens);
var listener_parser = new ErrorListener\<IToken>(quiet, tee, output);
parser.RemoveErrorListeners();
parser.AddErrorListener(listener_parser);
if (show_profile)
{
parser.Profile = true;
}
if (show_trace)
{
parser.Trace = true;
// ParserATNSimulator.trace_atn_sim = true;
}
before = DateTime.Now;
var tree = parser.<start_symbol>();
after = DateTime.Now;
if (listener_lexer.had_error || listener_parser.had_error)
{
result = "fail";
exit_code = 1;
}
else
{
result = "success";
}
if (show_tree)
{
if (tee)
{
System.IO.File.WriteAllText(input_name + ".tree", tree.ToStringTree(parser));
} else
{
System.Console.Error.WriteLine(tree.ToStringTree(parser));
}
}
if (show_profile)
{
System.Console.Error.WriteLine(String.Join(",\n\r", parser.ParseInfo.getDecisionInfo().Select(d => d.ToString())));
}
}
if (!quiet)
{
Expand Down
7 changes: 5 additions & 2 deletions _scripts/templates/CSharp/st.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ done
rm -f parse.txt
for f in ${files[*]}
do
dotnet trwdog -- ./bin/Debug/net7.0/<if(os_win)>Test.exe<else>Test<endif> -q -tee -tree $f -tokens >> parse.txt 2>&1
dotnet trwdog -- ./bin/Debug/net7.0/<if(os_win)>Test.exe<else>Test<endif> -q -tee -tokens -lex-only $f >> parse.txt 2>&1
dotnet trwdog -- ./bin/Debug/net7.0/<if(os_win)>Test.exe<else>Test<endif> -q -tee -tree $f >> parse.txt 2>&1
xxx="$?"
if [ "$xxx" -ne 0 ]
then
Expand All @@ -46,7 +47,9 @@ do
done
<else>
# Group parsing.
echo "${files[*]}" | dotnet trwdog -- ./bin/Debug/net7.0/<if(os_win)>Test.exe<else>Test<endif> -q -x -tee -tree -tokens > parse.txt 2>&1
rm -f parse.txt
echo "${files[*]}" | dotnet trwdog -- ./bin/Debug/net7.0/<if(os_win)>Test.exe<else>Test<endif> -q -x -tee -lex-only -tokens >> parse.txt 2>&1
echo "${files[*]}" | dotnet trwdog -- ./bin/Debug/net7.0/<if(os_win)>Test.exe<else>Test<endif> -q -x -tee -tree >> parse.txt 2>&1
status=$?
<endif>

Expand Down

0 comments on commit dd1cad5

Please sign in to comment.