Parsing Expression With Xtext
-
Upload
sven-efftinge -
Category
Software
-
view
2.292 -
download
0
Transcript of Parsing Expression With Xtext
![Page 1: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/1.jpg)
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.AdditionStackAST
Grammar
Text
![Page 2: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/2.jpg)
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.Addition2.Multiplication
StackAST
Grammar
Text
![Page 3: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/3.jpg)
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.Addition2.Multiplication3.PrimaryExpression
StackAST
Grammar
Text
![Page 4: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/4.jpg)
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.Addition2.Multiplication3.PrimaryExpression
StackAST
Grammar
Text
![Page 5: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/5.jpg)
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.Addition2.Multiplication3.PrimaryExpression
StackAST
Grammar
Text
![Page 6: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/6.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition
StackAST
Grammar
Text
![Page 7: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/7.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition5.Multiplication
StackAST
Grammar
Text
![Page 8: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/8.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition5.Multiplication6.PrimaryExpression
StackAST
Grammar
Text
![Page 9: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/9.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition5.Multiplication6.PrimaryExpression
StackAST
Grammar
Text
![Page 10: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/10.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition5.Multiplication6.PrimaryExpression
StackAST
Grammar
Text
1
![Page 11: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/11.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition5.Multiplication6.PrimaryExpression
StackAST
Grammar
Text
1
![Page 12: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/12.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition5.Multiplication
StackAST
Grammar
Text
1
Reduce!
![Page 13: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/13.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition
StackAST
Grammar
Text
1
Reduce!
![Page 14: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/14.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition
StackAST
Grammar
Text
1
![Page 15: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/15.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition
StackAST
Grammar
Text
1
+
![Page 16: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/16.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition
StackAST
Grammar
Text
1
+
current = ruleMultiplication();// {AdditionalExpression.left=current}AdditionalExpression temp = new AdditionalExpression();temp.setLeft(current);current = temp:
![Page 17: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/17.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition
StackAST
Grammar
Text
1
+
![Page 18: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/18.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition
StackAST
Grammar
Text
1
+
![Page 19: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/19.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition
StackAST
Grammar
Text
1
+
![Page 20: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/20.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition5.Multiplication
StackAST
Grammar
Text
1
+
![Page 21: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/21.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition5.Multiplication6.PrimaryExpression
StackAST
Grammar
Text
1
+
![Page 22: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/22.jpg)
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.Addition2.Multiplication3.PrimaryExpression4.Addition
StackAST
Grammar
Text
1
+
20
Reduce!
![Page 23: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/23.jpg)
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.Addition2.Multiplication3.PrimaryExpression
StackAST
Grammar
Text
1
+
20
Reduce!
![Page 24: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/24.jpg)
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.Addition2.Multiplication3.PrimaryExpression
StackAST
Grammar
Text
1
+
20
![Page 25: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/25.jpg)
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.Addition2.Multiplication3.PrimaryExpression
StackAST
Grammar
Text
1
+
20
![Page 26: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/26.jpg)
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.Addition2.Multiplication
StackAST
Grammar
Text
1
+
20
Reduce!
![Page 27: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/27.jpg)
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.Addition2.Multiplication
StackAST
Grammar
Text
1
+
20
*
![Page 28: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/28.jpg)
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.Addition2.Multiplication
StackAST
Grammar
Text
1
+
20
*
![Page 29: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/29.jpg)
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.Addition2.Multiplication
StackAST
Grammar
Text
1
+
20
*
![Page 30: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/30.jpg)
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.Addition2.Multiplication
StackAST
Grammar
Text
1
+
20
*
![Page 31: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/31.jpg)
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.Addition2.Multiplication3.PrimaryExpression
StackAST
Grammar
Text
1
+
20
*
2
![Page 32: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/32.jpg)
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.Addition2.Multiplication3.PrimaryExpression
StackAST
Grammar
Text
1
+
20
*
EOF
2
![Page 33: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/33.jpg)
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.Addition2.Multiplication
StackAST
Grammar
Text
1
+
20
*
EOF Reduce!
2
![Page 34: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/34.jpg)
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.Addition2.Multiplication
StackAST
Grammar
Text
1
+
20
*
EOF
2
![Page 35: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/35.jpg)
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.AdditionStackAST
Grammar
Text
1
+
20
*
EOF
2
Reduce!
![Page 36: Parsing Expression With Xtext](https://reader031.fdocuments.us/reader031/viewer/2022031821/58ab911d1a28abe3188b4f9f/html5/thumbnails/36.jpg)
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!