From 95c73d6e46ec6f606bcb0b689090a7e004047c43 Mon Sep 17 00:00:00 2001 From: Hallvard Traetteberg <hal@ntnu.no> Date: Fri, 15 Oct 2021 11:38:32 +0200 Subject: [PATCH] Improved grammar with example --- .../examples/TestClass.xjava | 29 ++++++++++++++++--- tdt4250.xjava/src/tdt4250/Xjava.xtext | 13 ++++----- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/tdt4250.xjava.examples/examples/TestClass.xjava b/tdt4250.xjava.examples/examples/TestClass.xjava index 76023e1..8e8e407 100644 --- a/tdt4250.xjava.examples/examples/TestClass.xjava +++ b/tdt4250.xjava.examples/examples/TestClass.xjava @@ -5,12 +5,33 @@ import java.util.Collection; class TestClass extends AbstractTestClass { - private String name; + private String name = "fdhjls"; + private String familyName = "fdhjls"; public void hello(String name, int num) { - + // if + if (this.name) { + // assignment + familyName = "fdjsklø"; + } + // while + while (age) { + // feature call + this.name(age); + } + // do/while + do { + + } while (age); + // for + for (int a; a; a++) { + + } + // foreach + for (int a : b) { + + } } - private int age; - + private int age = 54; } \ No newline at end of file diff --git a/tdt4250.xjava/src/tdt4250/Xjava.xtext b/tdt4250.xjava/src/tdt4250/Xjava.xtext index 8e2d552..2b6fca1 100644 --- a/tdt4250.xjava/src/tdt4250/Xjava.xtext +++ b/tdt4250.xjava/src/tdt4250/Xjava.xtext @@ -86,7 +86,7 @@ ParameterDeclaration: // Statements Statement: - BlockStatement | EmptyStatement | VariablesDeclaration | Assignment | FeatureStatement | + BlockStatement | EmptyStatement | VariablesDeclaration | AssignmentStatement | FeatureStatement | IfStatement | WhileStatement | DoWhileStatement | ForStatement ; @@ -132,6 +132,10 @@ Assignment: (varDecl = [AssignmentTarget | ID] (ASSIGN_OP expr = Expression)) | (varDecl = [AssignmentTarget | ID] PRE_POST_ASSIGN_OP) ) +; + +AssignmentStatement: + assignment = Assignment ';' ; @@ -153,11 +157,6 @@ DoWhileStatement: 'while' '(' condition = Expression ')' ';' ; -XForStatement: - 'for' '(' initStatement = VariablesDeclaration condition = Expression ';' stepStatement = Assignment')' - bodyStatement = Statement -; - ForStatement: 'for' '(' type = TypeReference name = ID @@ -166,7 +165,7 @@ ForStatement: (':' forEachInitializer = Expression) | ( ('=' initializer = Expression)? - otherVars += VariableDeclarationPart (',' otherVars += VariableDeclarationPart)* ';' + (otherVars += VariableDeclarationPart (',' otherVars += VariableDeclarationPart)*)? ';' condition = Expression ';' assign = Assignment ) ) -- GitLab