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