Posted By:
xiehao74
Posted On:
Thursday, March 21, 2013 01:49 PM
I have a sum function as follows: sumFunction returns [double value] : 'sum' '(i=' startIndex=Integer ';' endIndex=Integer ';' step=Integer ')' e=expression {value=Evaluation.sumExpression($startIndex.value, $endIndex.value, $step.value, $e.value);} ; My problem is: when startIndex>endIndex and step>0, this sum function should return 0.0. However, Antlr parser continue parse the "e=expression" portion. The result is that sometimes the parsing of "e=expression" return error because startIndex is outside the range. Do you think I can check the condition of startIndex, endIndex, and step first? If condition is true, parse the "e=expression". Otherwise skip "e=e
More>>
I have a sum function as follows:
sumFunction returns [double value] :
'sum' '(i=' startIndex=Integer ';' endIndex=Integer ';' step=Integer ')' e=expression
{value=Evaluation.sumExpression($startIndex.value, $endIndex.value, $step.value, $e.value);}
;
My problem is: when startIndex>endIndex and step>0, this sum function should return 0.0. However, Antlr parser continue parse the "e=expression" portion. The result is that sometimes the parsing of "e=expression" return error because startIndex is outside the range.
Do you think I can check the condition of startIndex, endIndex, and step first? If condition is true, parse the "e=expression". Otherwise skip "e=expression".
<<Less