Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

OpenACC support

ROUP models standardized OpenACC syntax from 1.0 through 3.4 for C, C++, and Fortran. These reference chapters cross-check the 3.4 vocabulary and restrictions against the official specification:

Version behavior

OpenAccConfig::new accepts the union of standardized historical syntax. OpenAccConfig::exact selects an introduction ceiling from OpenACC 1.0, 2.0, 2.5, 2.6, 2.7, 3.0, 3.1, 3.2, 3.3, or 3.4. Syntax introduced later is rejected; older standardized syntax remains accepted.

Typed and canonical results

Directive parameters, clauses, data modifiers, reduction operators, locators, queue expressions, and embedded host expressions are typed before success is returned. Standard aliases such as dtype, pcopy*, pcreate, and present_or_* are accepted and canonicalized. The host(var-list) action on update is likewise represented as the canonical self clause and typed item-list payload while keeping its OpenACC 1.0 spelling floor. Multiword directives and the standardized host_data spelling are parsed exactly; fabricated space/underscore variants are rejected. The exact source spelling remains available through its checked span, not as a competing semantic kind.

Unknown syntax, malformed payloads, nonstandard extensions, invalid directive-clause combinations, duplicate singleton clauses, unavailable features, and trailing input are hard errors. The parser never returns opaque payload text or retries with a permissive grammar.

Public behavior is covered by tests/openacc_public_api.rs, tests/openacc_directive_parameters.rs, tests/openacc_line_continuations.rs, tests/feature_availability.rs, and the strict payload and error suites. C ABI and accparser adapter checks are separate consumers of the safe parser.