-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Closed
Description
At present time all runtimes have a method for getting result tree in lisp format toStringTree
. It would be also good to have a method toStringTreeIndented
. Indented output more applicable for string trees comparison (diff). See the sample output for input grammar and text below.
Grammar
grammar Test;
expression
: <assoc=right> expression '^' expression
| expression ('*' | '/') expression
| expression ('+' | '-') expression
| '(' expression ')'
| ID
;
ID: [a-zA-Z] [0-9a-zA-Z]*;
DIGIT: [0-9]+;
WS: [ \t\r\n] -> skip;
Text
a1 * (a2 + a3 + a4 - a5 ^ a6 ^ (a8 + a9 / a10)) * a11 * a12
toStringTree method
(expression (expression (expression (expression a1) * (expression ( (expression (expression (expression (expression a2) + (expression a3)) + (expression a4)) - (expression (expression a5) ^ (expression (expression a6) ^ (expression ( (expression (expression a8) + (expression (expression a9) / (expression a10))) ))))) ))) * (expression a11)) * (expression a12))
toStringTreeIndented method
(expression
(expression
(expression
(expression
'a1'
)
'*'
(expression
'('
(expression
(expression
(expression
(expression
'a2'
)
'+'
(expression
'a3'
)
)
'+'
(expression
'a4'
)
)
'-'
(expression
(expression
'a5'
)
'^'
(expression
(expression
'a6'
)
'^'
(expression
'('
(expression
(expression
'a8'
)
'+'
(expression
(expression
'a9'
)
'/'
(expression
'a10'
)
)
)
')'
)
)
)
)
')'
)
)
'*'
(expression
'a11'
)
)
'*'
(expression
'a12'
)
)
Also it is usefull to have a method that returns a tree in JSON format (tree serialization in fact).