Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
FortyMcFortface
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Johannes Mey
FortyMcFortface
Commits
72025e38
Commit
72025e38
authored
8 years ago
by
Johannes Mey
Browse files
Options
Downloads
Patches
Plain Diff
improve AST of OpenACC
parent
da567ba2
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
Parser/spec/OpenAcc.rats
+114
-117
114 additions, 117 deletions
Parser/spec/OpenAcc.rats
with
114 additions
and
117 deletions
Parser/spec/OpenAcc.rats
+
114
−
117
View file @
72025e38
...
...
@@ -32,6 +32,13 @@ List<Variable> var_list =
}
;
List<Variable> p_var_list =
LPAREN vl:(COMMA yyValue:variable)* RPAREN
{
yyValue = new List().addAll(vl.list());
}
;
List<Expr> expr_list =
e:expr el:(COMMA yyValue:expr)*
{
...
...
@@ -42,6 +49,7 @@ List<Expr> expr_list =
//// // An AccStmt does not have a label or a comment (unlike Fortran statements).
//// // It must, however, begin with ""!$acc" and end with a line break
//// abstract AccStmt ;
//// abstract AccAbstractDataStmt ::= AccClause* ;
// constructs ------------------------------------------------------------------
...
...
@@ -65,7 +73,7 @@ AccParallelConstruct acc_parallel_construct =
}
;
//// AccParallelStmt:Acc
Stmt ::= AccClause*
;
//// AccParallelStmt:Acc
AbstractDataStmt
;
AccParallelStmt acc_parallel_stmt =
A_P A_PARALLEL LB
{
...
...
@@ -96,7 +104,7 @@ AccKernelsConstruct acc_kernels_construct =
}
;
//// AccKernelsStmt:Acc
Stmt ::= AccClause*
;
//// AccKernelsStmt:Acc
AbstractDataStmt
;
AccKernelsStmt acc_kernels_stmt =
A_P A_KERNELS LB
{
...
...
@@ -127,7 +135,7 @@ AccDataConstruct acc_data_construct =
}
;
//// AccDataStmt:Acc
Stmt ::= AccClause*
;
//// AccDataStmt:Acc
AbstractDataStmt
;
AccDataStmt acc_data_stmt =
A_P A_DATA LB
{
...
...
@@ -296,7 +304,7 @@ AccParallelLoopConstruct acc_parallel_loop_construct =
}
;
//// AccParallelLoopStmt:Acc
Stmt ::= AccClause*
;
//// AccParallelLoopStmt:Acc
AbstractDataStmt
;
AccParallelLoopStmt acc_parallel_loop_stmt =
A_P A_PARALLEL A_LOOP LB
{
...
...
@@ -327,7 +335,7 @@ AccKernelsLoopConstruct acc_kernels_loop_construct =
}
;
//// AccKernelsLoopStmt:Acc
Stmt ::= AccClause*
;
//// AccKernelsLoopStmt:Acc
AbstractDataStmt
;
AccKernelsLoopStmt acc_kernels_loop_stmt =
A_P A_KERNELS A_LOOP LB
{
...
...
@@ -388,9 +396,9 @@ AccExitDataDirective acc_exit_data_directive =
//// // ACC 2.10
//// AccCacheDirective:AccDirective ::= Variable* ;
AccCacheDirective acc_cache_directive =
A_P A_CACHE
LPAREN vl:
var_list
RPAREN
LB
A_P A_CACHE
list:p_
var_list LB
{
yyValue = new AccCacheDirective(new Opt<Label>(), new Comment(new Opt<CommentContent>()),
v
l);
yyValue = new AccCacheDirective(new Opt<Label>(), new Comment(new Opt<CommentContent>()), l
ist
);
}
;
...
...
@@ -471,19 +479,9 @@ List acc_clause_list =
public AccClause acc_clause =
acc_if_clause
/ acc_reduction_clause
/ acc_copy_clause
/ acc_copyin_clause
/ acc_copyout_clause
/ acc_create_clause
/ acc_delete_clause
/ acc_device_clause
/ acc_firstprivate_clause
/ acc_pcopy_clause
/ acc_pcopyin_clause
/ acc_pcopyout_clause
/ acc_pcreate_clause
/ acc_private_clause
/ acc_present_clause
/ acc_use_device_clause
/ acc_default_none_clause
/ acc_device_type_clause
...
...
@@ -506,8 +504,95 @@ public AccClause acc_clause =
/ acc_bind_clause
/ acc_seq_clause
/ acc_shortloop_clause
/ acc_deviceptr_clause
/ acc_auto_clause
/ acc_data_clause
;
//// abstract AccDataClause:AccClause ::= Variable* ;
AccDataClause acc_data_clause =
acc_deviceptr_clause
/ acc_present_clause
/ acc_copy_clause
/ acc_copyin_clause
/ acc_copyout_clause
/ acc_create_clause
/ acc_delete_clause
;
//// AccDeviceptrClause:AccDataClause ;
AccDeviceptrClause acc_deviceptr_clause =
A_DEVICEPTR list:p_var_list
{
yyValue = new AccDeviceptrClause(list);
}
;
//// AccPresentClause:AccDataClause ;
AccPresentClause acc_present_clause =
A_PRESENT list:p_var_list
{
yyValue = new AccPresentClause(list);
}
;
//// AccCopyClause:AccDataClause ;
//// AccPresentOrCopyClause:AccCopyClause ;
AccCopyClause acc_copy_clause =
A_COPY list:p_var_list
{
yyValue = new AccCopyClause(list);
}
/ (A_PCOPY / A_PRESENT_OR_COPY) list:p_var_list
{
yyValue = new AccPresentOrCopyClause(list);
}
;
//// AccCopyInClause:AccDataClause ;
//// AccPresentOrCopyInClause:AccCopyClause ;
AccCopyInClause acc_copyin_clause =
A_COPYIN list:p_var_list
{
yyValue = new AccCopyInClause(list);
}
/ (A_PCOPYIN / A_PRESENT_OR_COPYIN) list:p_var_list
{
yyValue = new AccPresentOrCopyInClause(list);
}
;
//// AccCopyOutClause:AccDataClause ;
//// AccPresentOrCopyOutClause:AccCopyClause ;
AccCopyOutClause acc_copyin_clause =
A_COPYOUT list:p_var_list
{
yyValue = new AccCopyOutClause(list);
}
/ (A_PCOPYOUT / A_PRESENT_OR_COPYOUT) list:p_var_list
{
yyValue = new AccPresentOrCopyOutClause(list);
}
;
//// AccCreateClause:AccDataClause ;
//// AccPresentOrCreateClause:AccCreateClause ;
AccCreateClause acc_create_clause =
A_CREATE list:p_var_list
{
yyValue = new AccCreateClause(list);
}
/ (A_PCREATE / A_PRESENT_OR_CREATE) list:p_var_list
{
yyValue = new AccPresentOrCreateClause(list);
}
;
//// AccDeleteClause:AccDataClause ;
AccDeleteClause acc_delete_clause =
A_DELETE list:p_var_list
{
yyValue = new AccDeleteClause(list);
}
;
//// AccIfClause:AccClause ::= Condition:Expr ;
...
...
@@ -560,65 +645,9 @@ AccOperator acc_operator =
/ A_NEQV { yyValue = new AccOperatorNEqv(); }
;
//// AccDeviceptrClause:AccClause ::= Variable* ;
AccDeviceptrClause acc_deviceptr_clause =
A_DEVICEPTR LPAREN list:var_list RPAREN
{
yyValue = new AccDeviceptrClause(list);
}
;
//// AccCopyClause:AccClause ::= Variable* ;
AccCopyClause acc_copy_clause =
A_COPY LPAREN list:var_list RPAREN
{
yyValue = new AccCopyClause(list);
}
;
//// AccCopyInClause:AccClause ::= Variable* ;
AccCopyInClause acc_copyin_clause =
A_COPYIN LPAREN list:var_list RPAREN
{
yyValue = new AccCopyInClause(list);
}
;
//// AccCopyOutClause:AccClause ::= Variable* ;
AccCopyOutClause acc_copyout_clause =
A_COPYOUT LPAREN list:var_list RPAREN
{
yyValue = new AccCopyOutClause(list);
}
;
//// AccCreateClause:AccClause ::= Variable* ;
AccCreateClause acc_create_clause =
A_CREATE LPAREN list:var_list RPAREN
{
yyValue = new AccCreateClause(list);
}
;
//// AccDeleteClause:AccClause ::= Variable* ;
AccDeleteClause acc_delete_clause =
A_DELETE LPAREN list:var_list RPAREN
{
yyValue = new AccDeleteClause(list);
}
;
//// AccPresentClause:AccClause ::= Variable* ;
AccPresentClause acc_present_clause =
A_PRESENT LPAREN list:var_list RPAREN
{
yyValue = new AccPresentClause(list);
}
;
//// AccDeviceClause:AccClause ::= Variable* ;
AccDeviceClause acc_device_clause =
A_DEVICE
LPAREN
list:var_list
RPAREN
A_DEVICE list:
p_
var_list
{
yyValue = new AccDeviceClause(list);
}
...
...
@@ -626,47 +655,15 @@ AccDeviceClause acc_device_clause =
//// AccFirstPrivateClause:AccClause ::= Variable* ;
AccFirstPrivateClause acc_firstprivate_clause =
A_FIRSTPRIVATE
LPAREN
list:var_list
RPAREN
A_FIRSTPRIVATE list:
p_
var_list
{
yyValue = new AccFirstPrivateClause(list);
}
;
//// AccPresentOrCopyClause:AccClause ::= Variable* ;
AccPresentOrCopyClause acc_pcopy_clause =
(A_PCOPY / A_PRESENT_OR_COPY) LPAREN list:var_list RPAREN
{
yyValue = new AccPresentOrCopyClause(list);
}
;
//// AccPresentOrCopyInClause:AccClause ::= Variable* ;
AccPresentOrCopyInClause acc_pcopyin_clause =
(A_PCOPYIN / A_PRESENT_OR_COPYIN) LPAREN list:var_list RPAREN
{
yyValue = new AccPresentOrCopyInClause(list);
}
;
//// AccPresentOrCopyOutClause:AccClause ::= Variable* ;
AccPresentOrCopyOutClause acc_pcopyout_clause =
(A_PCOPYOUT / A_PRESENT_OR_COPYOUT) LPAREN list:var_list RPAREN
{
yyValue = new AccPresentOrCopyOutClause(list);
}
;
//// AccPresentOrCreateClause:AccClause ::= Variable* ;
AccPresentOrCreateClause acc_pcreate_clause =
(A_PCREATE / A_PRESENT_OR_CREATE) LPAREN list:var_list RPAREN
{
yyValue = new AccPresentOrCreateClause(list);
}
;
//// AccPrivateClause:AccClause ::= Variable* ;
AccPrivateClause acc_private_clause =
A_PRIVATE
LPAREN
list:var_list
RPAREN
A_PRIVATE list:
p_
var_list
{
yyValue = new AccPrivateClause(list);
}
...
...
@@ -674,7 +671,7 @@ AccPrivateClause acc_private_clause =
//// AccUseDeviceClause:AccClause ::= Variable* ;
AccUseDeviceClause acc_use_device_clause =
A_USEDEVICE
LPAREN
list:var_list
RPAREN
A_USEDEVICE list:
p_
var_list
{
yyValue = new AccUseDeviceClause(list);
}
...
...
@@ -696,7 +693,7 @@ AccDeviceTypeClause acc_device_type_clause =
{
yyValue = new AccDeviceTypeStarClause();
}
/ (A_DEVICE_TYPE / A_DTYPE)
LPAREN
list:var_list
RPAREN
/ (A_DEVICE_TYPE / A_DTYPE) list:
p_
var_list
{
yyValue = new AccDeviceTypeListClause(list);
}
...
...
@@ -761,7 +758,7 @@ AccVectorLengthClause acc_vector_length_clause =
//// AccSelfClause:AccClause ::= Variable* ;
AccSelfClause acc_self_clause =
A_SELF
LPAREN
list:var_list
RPAREN
A_SELF list:
p_
var_list
{
yyValue = new AccSelfClause(list);
}
...
...
@@ -769,7 +766,7 @@ AccSelfClause acc_self_clause =
//// AccHostClause:AccClause ::= Variable* ;
AccHostClause acc_host_clause =
A_HOST
LPAREN
list:var_list
RPAREN
A_HOST list:
p_
var_list
{
yyValue = new AccHostClause(list);
}
...
...
@@ -846,7 +843,7 @@ AccVectorClause acc_vector_clause =
//// AccDeviceResidentClause:AccClause ::= Variable* ;
AccDeviceResidentClause acc_device_resident_clause =
A_DEVICE_RESIDENT
LPAREN
list:var_list
RPAREN
A_DEVICE_RESIDENT list:
p_
var_list
{
yyValue = new AccDeviceResidentClause(list);
}
...
...
@@ -854,7 +851,7 @@ AccDeviceResidentClause acc_device_resident_clause =
//// AccLinkClause:AccClause ::= Variable* ;
AccLinkClause acc_link_clause =
A_LINK
LPAREN
list:var_list
RPAREN
A_LINK list:
p_
var_list
{
yyValue = new AccLinkClause(list);
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment