Hi All,
I have a simple grammar which describes expressions. Everything seems fine
but the resulting tree is very verbose and I was wondering if someone could
suggest how to flatten it.
The expression part of the grammar looks something like this, with the
expressions nested in order of precedence.
expression
: assignmentExpression
-> ^(EXPRESSION assignmentExpression)
;
assignmentExpression
: x+=listConcatExpression (ASSIGN x+=listConcatExpression )*
-> ^(ASSIGNMENT_EXPRESSION $x+)
;
listConcatExpression
: x+=logicalExpression (COLON x+=logicalExpression)*
-> ^(LIST_EXPRESSION $x+)
;
logicalExpression
: x+=relationalExpression (o1=logicalOperators x+=relationalExpression)*
-> ^(LOGICAL_EXPRESSION $o1* $x+)
;
If I parse an expression such as: '1 + 2' I get the following tree which
seems far too verbose.
ASSIGNMENT_EXPRESSION
LIST_EXPRESSION
LOGICAL_EXPRESSION
RELATIONAL_EXPRESSION
ADDITION_EXPRESSION
+
MULTIPLY_EXPRESSION
UNARY_EXPRESSION
SUBSCRIPT_EXPRESSION
NUMBER
1
MULTIPLY_EXPRESSION
UNARY_EXPRESSION
SUBSCRIPT_EXPRESSION
NUMBER
2
I would like the resulting tree to be flattened into something like the
following. Has anyone got any suggestions?
ADDITION_EXPRESSION
+
NUMBER
1
NUMBER
2
Regards, Keith
List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe:
http://www.antlr.org/mailman/options/antlr-interest/your-email-address
--
You received this message because you are subscribed to the Google Groups
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/il-antlr-interest?hl=en.