More Related Content
Similar to Parsing Expression With Xtext (12)
More from Sven Efftinge (20)
Parsing Expression With Xtext
- 1. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
StackAST
Grammar
Text
- 2. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
StackAST
Grammar
Text
- 3. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
StackAST
Grammar
Text
- 4. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
StackAST
Grammar
Text
- 5. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
StackAST
Grammar
Text
- 6. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
StackAST
Grammar
Text
- 7. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
5.Multiplication
StackAST
Grammar
Text
- 8. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
5.Multiplication
6.PrimaryExpression
StackAST
Grammar
Text
- 9. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
5.Multiplication
6.PrimaryExpression
StackAST
Grammar
Text
- 10. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
5.Multiplication
6.PrimaryExpression
StackAST
Grammar
Text
1
- 11. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
5.Multiplication
6.PrimaryExpression
StackAST
Grammar
Text
1
- 12. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
5.Multiplication
StackAST
Grammar
Text
1
Reduce!
- 13. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
StackAST
Grammar
Text
1
Reduce!
- 14. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
StackAST
Grammar
Text
1
- 15. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
StackAST
Grammar
Text
1
+
- 16. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
StackAST
Grammar
Text
1
+
current = ruleMultiplication();
// {AdditionalExpression.left=current}
AdditionalExpression temp = new AdditionalExpression();
temp.setLeft(current);
current = temp:
- 17. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
StackAST
Grammar
Text
1
+
- 18. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
StackAST
Grammar
Text
1
+
- 19. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
StackAST
Grammar
Text
1
+
- 20. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
5.Multiplication
StackAST
Grammar
Text
1
+
- 21. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
5.Multiplication
6.PrimaryExpression
StackAST
Grammar
Text
1
+
- 22. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
4.Addition
StackAST
Grammar
Text
1
+
20
Reduce!
- 23. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
StackAST
Grammar
Text
1
+
20
Reduce!
- 24. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
StackAST
Grammar
Text
1
+
20
- 25. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
StackAST
Grammar
Text
1
+
20
- 26. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
StackAST
Grammar
Text
1
+
20
Reduce!
- 27. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
StackAST
Grammar
Text
1
+
20
*
- 28. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
StackAST
Grammar
Text
1
+
20
*
- 29. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
StackAST
Grammar
Text
1
+
20
*
- 30. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
StackAST
Grammar
Text
1
+
20
*
- 31. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
StackAST
Grammar
Text
1
+
20
*
2
- 32. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
3.PrimaryExpression
StackAST
Grammar
Text
1
+
20
*
EOF
2
- 33. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
StackAST
Grammar
Text
1
+
20
*
EOF Reduce!
2
- 34. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
2.Multiplication
StackAST
Grammar
Text
1
+
20
*
EOF
2
- 35. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
1.Addition
StackAST
Grammar
Text
1
+
20
*
EOF
2
Reduce!
- 36. Addition returns Expression:
Multiplication ({AdditionalExpression.left=current} '+' right=Multiplication)*;
Multiplication returns Expression:
PrimaryExpression ({MultiplyExpression.left=current} '*' right=PrimaryExpression)*;
PrimaryExpression returns Expression:
{NumberLiteral} value=INT |
'(' Addition ')';
( 1 + 20 ) * 2
StackAST
Grammar
Text
1
+
20
*
EOF
2
Finished!