From ff141d358533911117f658e7f4d12840a1f33e2a Mon Sep 17 00:00:00 2001
From: Johannes Mey <johannes.mey@tu-dresden.de>
Date: Wed, 8 Feb 2017 12:32:43 +0100
Subject: [PATCH] add the possibility of conditional lines starting with "!$ "

---
 Parser/spec/ConditionalLines.rats         | 18 ++++++++++++++++++
 Parser/spec/ConditionalLinesPrinting.jadd | 13 +++++++++++++
 Parser/spec/ConditionalLinesTokens.rats   |  5 +++++
 3 files changed, 36 insertions(+)
 create mode 100644 Parser/spec/ConditionalLines.rats
 create mode 100644 Parser/spec/ConditionalLinesPrinting.jadd
 create mode 100644 Parser/spec/ConditionalLinesTokens.rats

diff --git a/Parser/spec/ConditionalLines.rats b/Parser/spec/ConditionalLines.rats
new file mode 100644
index 0000000..1573803
--- /dev/null
+++ b/Parser/spec/ConditionalLines.rats
@@ -0,0 +1,18 @@
+module ConditionalLines();
+
+modify Fortran2008;
+import ConditionalLinesTokens;
+
+
+//// // allow OpenMP constructs as executable_constructs
+//// ConditionalExecutableConstruct:ExecutableConstruct ::= ExecutableConstruct;
+ExecutableConstruct executable_construct +=
+    <ConditionalExecutableConstruct> CL executable_construct
+/   <BEGINNING> ...
+;
+
+//// ConditionalDeclarationConstruct:DeclarationConstruct ::= DeclarationConstruct;
+DeclarationConstruct declaration_construct +=
+    <ConditionalDeclarationConstruct> CL declaration_construct
+/   <BEGINNING> ...
+;
diff --git a/Parser/spec/ConditionalLinesPrinting.jadd b/Parser/spec/ConditionalLinesPrinting.jadd
new file mode 100644
index 0000000..fe15880
--- /dev/null
+++ b/Parser/spec/ConditionalLinesPrinting.jadd
@@ -0,0 +1,13 @@
+aspect PrettyPrint {
+    //// ConditionalExecutableConstruct:ExecutableConstruct ::= ExecutableConstruct;
+    public void ConditionalExecutableConstruct.prettyPrint(PrettyPrinter s) {
+        s.append("!$ ");
+        getExecutableConstruct().prettyPrint(s);
+    }
+
+    //// ConditionalDeclarationConstruct:DeclarationConstruct ::= DeclarationConstruct;
+    public void ConditionalDeclarationConstruct.prettyPrint(PrettyPrinter s) {
+        s.append("!$ ");
+        getDeclarationConstruct().prettyPrint(s);
+    }
+}
\ No newline at end of file
diff --git a/Parser/spec/ConditionalLinesTokens.rats b/Parser/spec/ConditionalLinesTokens.rats
new file mode 100644
index 0000000..85767fb
--- /dev/null
+++ b/Parser/spec/ConditionalLinesTokens.rats
@@ -0,0 +1,5 @@
+module ConditionalLinesTokens();
+
+import FortranTokens;
+
+transient void CL = "!$ " SS;
-- 
GitLab