You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I mistakenly was trying to test "tracing" in a parser cross targets, and misunderstood what the "trace" levers in the API actually were, and ran into this bug.
I wrote a parser driver for the PHP target that performs a $parser.setTrace(true);, then ran it. The output is unusable because the trace output is all on one line.
CSharp:
$ ./bin/Debug/net6.0/Test.exe ../examples/access.aql
enter arangodb_query, LT(1)=RETURN
enter data_query, LT(1)=RETURN
enter data_access_query, LT(1)=RETURN
enter return_expr, LT(1)=RETURN
consume [@0,0:5='RETURN',<9>,1:0] rule return_expr
enter expr, LT(1)=1
enter literal, LT(1)=1
enter numeric_literal, LT(1)=1
consume [@2,7:7='1',<86>,1:7] rule numeric_literal
exit numeric_literal, LT(1)=<EOF>
exit literal, LT(1)=<EOF>
exit expr, LT(1)=<EOF>
exit return_expr, LT(1)=<EOF>
exit data_access_query, LT(1)=<EOF>
exit data_query, LT(1)=<EOF>
consume [@4,9:8='<EOF>',<-1>,2:0] rule arangodb_query
exit arangodb_query, LT(1)=<EOF>
CSharp 0 ../examples/access.aql success 0.0505942
Total Time: 0.0921106
WriteLine() in C# outputs a newline character, whereas echo in PHP does not.
The easy fix is to just add print("\n");. I don't know enough about PHP to know what IO function outputs an OS-dependent newline ("\n" Linux vs "\r\n" Windows vs "\r" Mac).
The text was updated successfully, but these errors were encountered:
kaby76
changed the title
Parser.setTrace(true) does not have the same semantics as with all other targets
Parser.setTrace(true) does not have the same semantics as with other targets
Dec 17, 2022
I mistakenly was trying to test "tracing" in a parser cross targets, and misunderstood what the "trace" levers in the API actually were, and ran into this bug.
See this.
I wrote a parser driver for the PHP target that performs a
$parser.setTrace(true);
, then ran it. The output is unusable because the trace output is all on one line.CSharp:
PHP:
The problem is this code in the PHP runtime: https://github.com/antlr/antlr-php-runtime/blob/dev/src/ParserTraceListener.php#L25
Compare that to CSharp: https://github.com/antlr/antlr4/blob/76fa05c21b12b96a6c12a0a82e611ed9d87d5af4/runtime/CSharp/src/Parser.cs#L32
WriteLine()
in C# outputs a newline character, whereasecho
in PHP does not.The easy fix is to just add
print("\n");
. I don't know enough about PHP to know what IO function outputs an OS-dependent newline ("\n" Linux vs "\r\n" Windows vs "\r" Mac).The text was updated successfully, but these errors were encountered: