diff --git a/Parser/spec/OpenAcc.rats b/Parser/spec/OpenAcc.rats index 086829102f5bc900ca70802a4c88808edd5ef572..9f5a623b5116c1d9d8fd9c0b8cc2ec1de24a9671 100644 --- a/Parser/spec/OpenAcc.rats +++ b/Parser/spec/OpenAcc.rats @@ -481,6 +481,7 @@ List acc_clause_list = //// abstract AccClause ; public AccClause acc_clause = +<BEGINNING> acc_if_clause / acc_reduction_clause / acc_device_clause diff --git a/Parser/spec/SlotPrinting.jadd b/Parser/spec/SlotPrinting.jadd index c7dad4b0932f3261d3d8d8a13e4b66194a8436fa..2d0b88557c25cabad0654f3bfccfd146891a735b 100644 --- a/Parser/spec/SlotPrinting.jadd +++ b/Parser/spec/SlotPrinting.jadd @@ -50,4 +50,10 @@ aspect Printing { s.literalAppend(getString()); s.append("#"); } + + public void SlotAccClause.prettyPrint(PrettyPrinter s) { + s.append("#"); + s.literalAppend(getSlotName()); + s.append("#"); + } } diff --git a/Parser/spec/SlottableFortranParser.rats b/Parser/spec/SlottableFortranParser.rats index 456c72f5c697761080c4922a52fdb4e1fd01561b..095082083c188dbbc2d1e5bb1e3a1bf01709468a 100644 --- a/Parser/spec/SlottableFortranParser.rats +++ b/Parser/spec/SlottableFortranParser.rats @@ -302,6 +302,17 @@ Designator designator += / <BEGINNING> ... ; +// == AccClause Slots =================================================== + +//// SlotAccClause:AccClause ::= <SlotName:String> ; +AccClause acc_clause += + <DesignatorSlot> NUMBERSIGN n:slot_name (COLON A C C UNDERSCORE C L A U S E)? NUMBERSIGN + { + yyValue = new SlotAccClause(n); + } +/ <BEGINNING> ... +; + // == Name Slots =================================================== //// SlotForName:Name ; diff --git a/Parser/test-data/slots/acc_clause.f b/Parser/test-data/slots/acc_clause.f new file mode 100644 index 0000000000000000000000000000000000000000..b9d2738c85bf8b7ec58699ba6f1e13fd4e86e234 --- /dev/null +++ b/Parser/test-data/slots/acc_clause.f @@ -0,0 +1,8 @@ +! BlockSlot + + !$acc loop #MYCLAUSE# + do x = 0,p + #test# + end do + +end