Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
104 lines (84 sloc) 2.41 KB
module languages/ansi-c/syntax/Default-C-With-CPP
imports languages/generic-cpp/syntax/Whitespace
imports languages/generic-cpp/syntax/CommentsAsLayout
imports languages/ansi-c/syntax/C
%% This module shows a typical C/CPP combination that may work for your C
%% files. There is no guarantee however, since one can not predict
%% in which ways the preprocessor statements are intertwined with the C
%% constructs. This module covers a lot of 'nice' uses of the preprocessor.
%% generic CPP substitions
imports languages/generic-cpp/syntax/Substitutions[Identifier Expression StringConstant]
%% where can we put include directives
imports languages/generic-cpp/syntax/Includes[ExternalDeclaration]
%% definition of expression macros
imports languages/generic-cpp/syntax/Macros[Identifier Expression Statement]
%% Conditional statements
imports languages/generic-cpp/syntax/Conditionals[
Identifier
Expression
Statement+
Statement
]
%% Conditional declarations
imports languages/generic-cpp/syntax/Conditionals[
Identifier
Expression
Declaration+
Declaration
]
%% Conditional part of a block statement:
imports languages/generic-cpp/syntax/Conditionals[
Identifier
Expression
(Declaration+ Statement+)
Statement
]
%% Conditional functions
imports languages/generic-cpp/syntax/Conditionals[
Identifier
{Expression ";"}+
ExternalDeclaration+
FunctionDefinition
]
%% Macros with expressions as definitions
imports languages/generic-cpp/syntax/Macros[
Identifier
Expression
Declaration
]
%% Macros with bracketed statements as definitions
imports languages/generic-cpp/syntax/Macros[
Identifier
( "(" Statement ")" )
Declaration
]
%% Macros with normal statements as definitions
imports languages/generic-cpp/syntax/Macros[
Identifier
Statement
Declaration
]
%% Macro that yield a declaration without ; at the end
imports languages/generic-cpp/syntax/Macros[
Identifier
( Specifier+ {InitDeclarator ","}+ )
Declaration
]
%% Macro that yields a while with one statement without ; at the end
imports languages/generic-cpp/syntax/Macros[
Identifier
( "while" "(" Expression ")" Expression)
Declaration
]
%% Macro that yields a do while without ; at the end
imports languages/generic-cpp/syntax/Macros[
Identifier
( "do" Statement "while" "(" Expression ")" )
Declaration
]
exports
context-free syntax
"va_arg" "(" Expression "," TypeName ")" -> Expression {prefer}
hiddens
context-free start-symbols
TranslationUnit