From d947971e644364a64c107f8b3eb5bf45592fff09 Mon Sep 17 00:00:00 2001
From: "lucien.noel" <lucien.noel@etu.hesge.ch>
Date: Wed, 7 Dec 2022 19:04:35 +0100
Subject: [PATCH] =?UTF-8?q?class=20Moins=20cr=C3=A9=C3=A9e?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ArbreAbstrait/Moins.java | 19 +++++++++++++++++++
Tests/test_base_with_sementic_issue.input | 6 +-----
Visitors/ASTVisitor.java | 2 +-
Visitors/ByteCodeGenerator.java | 2 +-
Visitors/SemanticAnalyzer.java | 2 +-
Visitors/SourceCodeGenerator.java | 10 +++++-----
hepial.cup | 2 +-
7 files changed, 29 insertions(+), 14 deletions(-)
create mode 100644 ArbreAbstrait/Moins.java
diff --git a/ArbreAbstrait/Moins.java b/ArbreAbstrait/Moins.java
new file mode 100644
index 0000000..b3dd32a
--- /dev/null
+++ b/ArbreAbstrait/Moins.java
@@ -0,0 +1,19 @@
+public class Moins extends Unaire{
+ public Moins(Expression operande, String fl, int line, int col) {
+ super(operande, fl, line, col);
+ }
+
+ /**
+ * Get the binary operator
+ */
+ public String operateur() {
+ return "-";
+ }
+
+ /**
+ * Accepts a AST visitor
+ */
+ Object accept(ASTVisitor visitor){
+ return visitor.visit(this);
+ }
+}
diff --git a/Tests/test_base_with_sementic_issue.input b/Tests/test_base_with_sementic_issue.input
index f42a339..126236c 100755
--- a/Tests/test_base_with_sementic_issue.input
+++ b/Tests/test_base_with_sementic_issue.input
@@ -1,8 +1,4 @@
programme Program
debutprg
- c = c * 2;
- b = 3;
- d = c <> b;
-
- lire "oui";
+ c = -2;
finprg
diff --git a/Visitors/ASTVisitor.java b/Visitors/ASTVisitor.java
index 1c1af6a..1acb575 100755
--- a/Visitors/ASTVisitor.java
+++ b/Visitors/ASTVisitor.java
@@ -37,7 +37,7 @@ public interface ASTVisitor {
Object visit(InfEgal node);
Object visit(Inferieur node);
Object visit(Lire node);
- // Object visit(Moins node);
+ Object visit(Moins node);
Object visit(Nombre node);
Object visit(Non node);
diff --git a/Visitors/ByteCodeGenerator.java b/Visitors/ByteCodeGenerator.java
index d3dd815..4f0b76b 100755
--- a/Visitors/ByteCodeGenerator.java
+++ b/Visitors/ByteCodeGenerator.java
@@ -62,7 +62,7 @@ public class ByteCodeGenerator implements ASTVisitor {
public Object visit(Lire node) { return null; }
- // public Object visit(Moins node) { return null; }
+ public Object visit(Moins node) { return null; }
public Object visit(Nombre node) {
return null;
diff --git a/Visitors/SemanticAnalyzer.java b/Visitors/SemanticAnalyzer.java
index fd5a3cf..e659598 100755
--- a/Visitors/SemanticAnalyzer.java
+++ b/Visitors/SemanticAnalyzer.java
@@ -64,7 +64,7 @@ public class SemanticAnalyzer implements ASTVisitor {
public Object visit(Lire node) { return null; }
- // public Object visit(Moins node) { return null; }
+ public Object visit(Moins node) { return null; }
public Object visit(Nombre node) {
return null;
diff --git a/Visitors/SourceCodeGenerator.java b/Visitors/SourceCodeGenerator.java
index d825a48..52aa723 100755
--- a/Visitors/SourceCodeGenerator.java
+++ b/Visitors/SourceCodeGenerator.java
@@ -184,11 +184,11 @@ public class SourceCodeGenerator implements ASTVisitor {
return null;
}
- // public Object visit(Moins node){
- // code += "-";
- // node.getOperand().accept(this);
- // return null;
- // }
+ public Object visit(Moins node){
+ code += node.operateur();
+ node.getOperand().accept(this);
+ return null;
+ }
public Object visit(Nombre node) {
code += Integer.toString(node.getValeur());
diff --git a/hepial.cup b/hepial.cup
index 079c230..596467f 100755
--- a/hepial.cup
+++ b/hepial.cup
@@ -90,7 +90,7 @@ relation ::= expr:a EQUALS expr:b {: RESULT = new Egal(a, b, "", aleft
| expr:a SUPEQUAL expr:b {: RESULT = new SupEgal(a, b, "", aleft, aright); :};
op_una ::= NOT expr:a {: RESULT = new Non(a, "", aleft, aright); :}
- | MINUS expr {: :}
+ | MINUS expr:a {: RESULT = new Moins(a, "", aleft, aright);:}
%prec UMINUS;
operand ::= access:access {: RESULT = access; :}
--
GitLab