Name
tdfc2pragma — tdfc #pragma syntax
#pragma directive syntax
The following gives a summary of the syntax for the #pragma directives used for compiler configuration and token specification:
pragma-directive :
# pragma TenDRA ++? tendra-directive
# pragma token-directive
tendra-directive :
scope-directive
low-level-directive
analysis-directive on
check-directive allow
keyword-directive
type-directive
linkage-directive
misc-directive
tendra-token-directive
on :
on
warning
off
allow :
allow
warning
disallow
scope-directive :
begin
begin name environment identifier
end
directory identifier use environment identifier
use environment identifier
use environment identifier reset allow
low-level-directive :
error string-literal allow
error string-literal on
error string-literal as option string-literal
option string-literal allow
option string-literal on
option value string-literal integer-literal
use error string-literal
analysis-directive :
complete initialization analysis
complete struct / union analysis
conversion analysis conversion-spec?
discard analysis discard-spec?
enum switch analysis
external function linkage
for initialization block
ignore struct / union / enum tag
implicit export template
implicit function declaration
integer operator analysis
integer overflow analysis
nested comment analysis
operator precedence analysis
pointer operator analysis
throw analysis
unify external linkage
variable analysis
variable hiding analysis
weak prototype analysis
conversion-spec :
( int - int implicit-spec? )
( int - pointer implicit-spec? )
( pointer - int implicit-spec? )
( pointer - pointer implicit-spec? )
( int - enum implicit )
( pointer - void * implicit )
( void * - pointer implicit )
implicit-spec :
implicit
explicit
discard-spec :
( function return )
( static )
( value )
check-directive :
ambiguous overload resolution
assignment as bool
bitfield overflow
block function static
catch all
character escape overflow
compatible token
complete file includes
conditional declaration
conditional lvalue
conditional overload resolution overload-spec?
const conditional
directive as macro argument
dollar as ident
extra ,
extra ;
extra ; after conditional
extra ...
extra bitfield int type
extra macro definition
extra type definition
fall into case
forward enum declaration
function pointer as pointer
ident ...
implicit int type inttype-spec?
implicit token definition
incompatible interface declaration
incompatible member declaration
incompatible linkage
incompatible promoted function argument
incompatible type qualifier
incompatible void return
incomplete type as object type
indented # directive
indented directive after #
initialization of struct / union ( auto )
longlong type
no directive / nline after ident
no external declaration
no ident after #
no nline after file end
no token definition
overload resolution
prototype
prototype ( weak )
rvalue token as const
text after directive
this lvalue
unify incompatible string literal
unknown directive
unknown escape
unknown pragma
unknown struct / union
unmatched quote
unreachable code
variable initialization
weak macro equality
writeable string literal
inttype-spec :
for const / volatile
for external declaration
for function return
overload-spec :
( complete )
( incomplete )
keyword-directive :
keyword identifier for keyword-spec
undef keyword identifier
keyword-spec :
discard value
discard variable
exhaustive
fall into case
keyword identifier
operator operator
set
set reachable
set unreachable
type representation
weak
type-directive :
bottom identifier
character character-sign
character character-literal character-mapping
character string-literal character-mapping
compute promote identifier
escape character-literal character-mapping
integer literal literal-spec
promoted type-id : type-id
set character literal : type-id
set longlong type : longlong-spec
set ptrdiff_t : type-id
set size_t : type-id
set wchar_t : type-id
set string literal : string-const
set std namespace : scope-name
type identifier for type-spec
character-sign :
signed
unsigned
either
character-mapping :
as character-literal allow
disallow
literal-spec :
literal-base literal-suffix? literal-type-list
literal-base :
decimal
octal
hexadecimal
literal-suffix :
unsigned
long
unsigned long
long long
unsigned long long
literal-type-list :
* literal-type-spec
integer-literal literal-type-spec | literal-type-list
? literal-type-spec | literal-type-list
literal-type-spec :
: type-id
* allow? : identifier
* * allow? :
longlong-spec :
long
long long
string-const :
const
no const
scope-name :
identifier
::
type-spec :
bottom
ptrdiff_t
size_t
wchar_t
... printf
... scanf
linkage-directive :
const linkage linkage
external linkage string-literal
external volatile_t
inline linkage linkage
linkage resolution : linkage-spec
linkage :
external
internal
linkage-spec :
( linkage ) on
( linkage ) warning
off
misc-directive :
argument type-id as ...
argument type-id as type-id
compatible type : type-id == type-id : allow
conversion identifier-list allow
declaration block identifier begin
declaration block end
directive directive-spec directive-state
discard expression
exhaustive
explicit cast cast-spec? allow
includes depth integer-literal
preserve preserve-list
set expression
set error limit integer-literal
set name limit integer-literal warning?
suspend static identifier-list
directive-spec :
assert
file
ident
import
include_next
unassert
warning
weak
directive-state :
allow
warning
disallow
( ignore ) allow
( ignore ) warning
cast-operator :
static_cast
const_cast
reinterpret_cast
cast-spec :
as cast-operator
cast-spec | cast-operator
preserve-list :
identifier-list
*
identifier-list :
identifier identifier-list?
token-directive :
token token-spec
no_def token-list
define token-list
ignore token-list
interface token-list
undef token token-list
extend interface header-name
implement interface header-name
tendra-token-directive :
token token-spec
no_def token-list
define token-list
reject token-list
interface token-list
undef token token-list
extend header-name
implement header-name
member definition type-id : identifier member-offset
member-offset :
::? id-expression
member-offset . ::? id-expression
member-offset [ constant-expression ]
token-list :
token-id token-list?
# preproc-token-list
token-id :
token-namespace? identifier
type-id . identifier
token-spec :
token-introduction token-identification
token-introduction :
exp-token
statement-token
type-token
member-token
procedure-token
token-identification :
token-namespace? identifier # external-identifier?
token-namespace :
TAG
external-identifier :
-
preproc-token-list
exp-token :
EXP exp-storage? : type-id :
NAT
INTEGER
exp-storage :
lvalue
rvalue
const
statement-token :
STATEMENT
type-token :
TYPE
VARIETY
VARIETY signed
VARIETY unsigned
FLOAT
ARITHMETIC
SCALAR
CLASS
STRUCT
UNION
member-token :
MEMBER access-specifier? member-type-id : type-id :
member-type-id :
type-id
type-id % constant-expression
access-specifier :
public
protected
private
procedure-token :
general-procedure
simple-procedure
function-procedure
general-procedure :
PROC { bound-toks? | prog-pars? } token-introduction
bound-toks :
bound-token
bound-token , bound-toks
bound-token :
token-introduction token-namespace? identifier
prog-pars :
program-parameter
program-parameter , prog-pars
program-parameter :
EXP identifier
STATEMENT identifier
TYPE type-id
MEMBER type-id : identifier
PROC identifier
simple-procedure :
PROC ( simple-toks? ) token-introduction
simple-toks :
simple-token
simple-token , simple-toks
simple-token :
token-introduction token-namespace? identifier?
function-procedure :
FUNC type-id :C Pragma syntax
pragma_syntax: #pragma TenDRA tendra_pragma #pragma token token_pragma #pragma token_operation #pragma integer_pragma tendra_pragma: begin begin name environment identifier declaration block identifier begin declaration block end directory name use environment identifier use environment identifier end analysis_specfunction_pars keyword identifier for keyword_spec type identifier for type_speccheck_pragmavariable_pragmadialect_pragma analysis_spec: complete struct/union analysis state conversion conv_list allow conversion analysis conversion_spec discard analysis discard_spec enum switch analysis state fall into case permit function pointer as pointer permit integer operator analysis state integer overflow analysis state nested comment analysis state operator precedence analysis state unreachable code permit variable analysis state variable hiding analysis state weak prototype analysis state conversion_spec: empty ( int-int ) ( int-int explicit ) ( int-int implicit ) ( int-enum implicit) (enum-int implicit) ( int-pointer ) ( int-pointer explicit ) (int-pointer implicit ) ( pointer-int ) ( pointer-int explicit ) ( pointer-int implicit ) ( pointer-pointer ) ( pointer-pointer explicit ) ( pointer-pointer implicit ) discard_spec: empty ( function return ) ( static ) ( value ) function_pars: argument type_name as type_name argument type_name as ... extra ... permit keyword_spec: discard value discard variable exhaustive fall into case set set reachable set unreachable type representation weak type_spec: bottom ... printf ... scanf check_pragma: implicit function declaration state incompatible interface declaration permit incompatible void return permit variable_pragma: discard identifierseparator preserve identifier_list set identifier separator suspend static identifier_list exhaustive separator: ; , identifier_list: identifier identifieridentifier_list dialect_pragma: ++ assignment as bool permit bitfield overflow permit block function static permit character set_sign character escape overflow permit compatible type : char * == void * : permit conditional lvalue dallow const conditional permit dollar as ident dallow directive pp_directive pp_spec directive as macro argument permit external volatile_t extra ; permit extra ; after conditional permit extra , permit extra bitfield int type permit extra macro definition dallow extra type definition permit forward enum declaration dallow floating point equality permit ident ... permit ignore struct/union/enum tag status implicit int type for external declaration permit implicit int type for function return permit includes depth integral_constant incompatible linkage permit incompatible promoted function argument dallow incompatible type qualifier dallow incomplete type as object type permit indented # directive permit initialization of struct/union (auto) permit linkage resolution : linkage_spec longlong type permit no directive/nline after ident permit no external declaration permit no ident after # permit no nline after file end permit prototype permit prototype (weak) permit set longlong type : type_name set name limit integer_constant set size_t : type_name text after directive permit unify external linkage status unify incompatible string literal permit unknown escape permit unknown pragma permit unknown struct/union dallow unknown directive permit unmatched quote permit variable initialization dallow weak macro equality permit writeable string literal permit set_sign: signed unsign either pp_directive: file ident assert unassert weak pp_spec: allow warning (ignore) allow (ignore) warning linkage_spec: (internal) on (internal) warning (external) on (external) warning off state: on warning off permit: allow warning disallow dallow: allow disallow token_pragma: ARITHMETIC DEFINE MEMBER EXP FUNC MEMBER NAT PROC STATEMENT STRUCT TYPE UNION VARIETY token_operation: define no_def extend ignore implement interface promote integer_pragma: integer literal lit_class_type_list lit_class_type_list: *int_type_spec integer_constant int_type_spec | lit_class_type_list int_type_spec: type_name *warning? : identifier ** :