Main program: CMacro_Program
CMacro syntax:
Count | Terminals: | |
CMacro_Character_Literal: quotes:' escape:\ doubled:no multiline:no | ||
217 | CMacro_Comment: /* comment */ or // comment to end of line | |
CMacro_CommentRestOfLine: comment to end of line | ||
102 | CMacro_Define_Definition: An identifier | |
5,298 | CMacro_EndOfLine: End of line | |
CMacro_HexNumber: A hex number | ||
CMacro_Identifier: An identifier | ||
39 | CMacro_Identifier_Reference: An identifier | |
4,617 | CMacro_IncludeSys: include system file | |
59 | CMacro_Literal: quotes:" escape:\ doubled:no multiline:no | |
56 | CMacro_MultiLineText: multiline text | |
11 | CMacro_Number: exponent_chars:Ee suffix_chars:Lf trailing_period:yes ignore_char:none | |
31 | CMacro_Parameter_Definition: An identifier | |
489 | CMacro_RestOfLine: Rest of the line | |
Count | Statistics(*) | Tokens: |
CMacroFunctionParens: '(' [CMacro_Identifier_Reference] ')' | ||
16 | (none | 50% | none | none | none | 38% | none | none | none | none | none | none | none | 13% | none | none | none | none | none | none) | CMacro_Expression: (CMacro_HexNumber | CMacro_Number | CMacro_Literal | CMacro_Character_Literal | CMacro_FunctionCall | CMacro_IdentifierExpression | CMacro_SignedExpression | CMacro_NotExpression | CMacro_ParenthesizedExpression | CMacro_SymbolExpression | CMacro_MultiplicativeExpression | CMacro_AdditiveExpression | CMacro_RelationalExpression | CMacro_EqualityExpression | CMacro_BitwiseAndExpression | CMacro_ExclusiveOrExpression | CMacro_BitwiseOrExpression | CMacro_ConditionalAndExpression | CMacro_ConditionalOrExpression | CMacro_ConcatenateExpression) |
CMacro_Program: CMacro_Element* | ||
25 | all all | | CMacro_CommentLine: CMacro_Comment CMacro_EndOfLine |
115 | (1% | 22% | 29% | 49% | none) | | CMacro_Element: (CMacro_Pragma_Statement | CMacro_CommentLine | CMacro_StatementOrComment | CMacro_MultiLineText | CMacro_EndOfLine) |
5,216 | none all none all | CMacro_StatementOrComment: [CMacro_EndOfLine] CMacro_StmtBody [CMacro_Comment]* CMacro_EndOfLine |
5,216 | (none | 2% | 7% | 0% | 1% | 90% | none | 0% | none | none) | | CMacro_StmtBody: (CMacro_IfDefCPlusPlus | CMacro_Define_Statement | CMacro_Error_Statement | CMacro_If_Statement | CMacro_IfDef_Statement | CMacro_Include_Statement | CMacro_LineNumber_Statement | CMacro_Pragma_Statement | CMacro_Region_Statement | CMacro_Undef_Statement) |
CMacro_AdditiveExpression: CMacro_Expression ("+"|"-") CMacro_Expression | ||
CMacro_BitwiseAndExpression: CMacro_Expression '&' CMacro_Expression | ||
CMacro_BitwiseOrExpression: CMacro_Expression '|' CMacro_Expression | ||
CMacro_ConcatenateExpression: CMacro_Expression "##" CMacro_Expression | ||
CMacro_ConditionalAndExpression: CMacro_Expression "&&" CMacro_Expression | ||
CMacro_ConditionalOrExpression: CMacro_Expression "||" CMacro_Expression | ||
2 | all all all | CMacro_EqualityExpression: CMacro_Expression ("=="|"!=") CMacro_Expression |
CMacro_ExclusiveOrExpression: CMacro_Expression '^' CMacro_Expression | ||
CMacro_FunctionCall: "defined" CMacro_FunctionType | ||
| CMacro_FunctionType: (CMacro_Identifier_Reference | CMacroFunctionParens) | ||
6 | all none | CMacro_IdentifierExpression: CMacro_Identifier_Reference [CMacroFunctionParens] |
CMacro_MultiplicativeExpression: CMacro_Expression ("*"|"/"|"%") CMacro_Expression | ||
CMacro_NotExpression: '!' CMacro_Expression | ||
CMacro_ParenthesizedExpression: '(' CMacro_Expression ')' | ||
CMacro_RelationalExpression: CMacro_Expression ("<"|">"|"<="|">=") CMacro_Expression | ||
CMacro_SignedExpression: ("+"|"-") CMacro_Expression | ||
CMacro_SymbolExpression: '#' CMacro_Expression | ||
CMacro_Pragma_CLang: ("clang"|"GCC") ("diagnostic"|"optimize") CMacro_Pragma_CLang_What | ||
| CMacro_Pragma_CLang_What: (CMacro_Pragma_CLangIgnored | CMacro_Pragma_CLangOptimize | CMacro_Literal | ("push"|"pop")) | ||
| | CMacro_Pragma_CLangIgnored: "ignored" CMacro_Literal | ||
| | CMacro_Pragma_CLangOptimize: '(' CMacro_Literal ')' | ||
CMacro_Pragma_CodeSeg: "code_seg" '(' CMacro_Literal ')' | ||
CMacro_Pragma_Comment: "comment" '(' "lib" ',' CMacro_Literal ')' | ||
CMacro_Pragma_Export: ("export"|"import") ("on"|"off") | ||
CMacro_Pragma_Intrinsic: "intrinsic" '(' [("rotl"|"rotr"|"_rotl"|"_rotr"|"_BitScanReverse"|"_InterlockedCompareExchange"|"_InterlockedCompareExchangePointer"|"_umul128")] ')' | ||
CMacro_Pragma_Mark: "mark" ['-'] [CMacro_CommentRestOfLine] | ||
CMacro_Pragma_Message: "message" ["disable"] '(' CMacro_PragmaMsg* ')' | ||
| CMacro_PragmaMsg: (CMacro_Literal | ("UNDERFLOW"|"FLOATOVERFL"|"nosimpint")) | ||
CMacro_Pragma_Pack: "pack" '(' [("push"|"pop")] [','] [CMacro_Number] ')' | ||
CMacro_Pragma_Region: "region" [CMacro_CommentRestOfLine] | ||
CMacro_Pragma_RuntimeChecks: "runtime_checks" '(' CMacro_Literal [','] ["off"] [','] [CMacro_Number] ')' | ||
CMacro_Pragma_STDC: "STDC" "FP_CONTRACT" "OFF" | ||
CMacro_Pragma_Unroll: "unroll" CMacro_Number | ||
CMacro_Pragma_Warn: "warn" ['-'] CMacro_Number | ||
3 | all all all all 1.00(all) all | CMacro_Pragma_Warning: "warning" ['('] ("disable"|"restore"|"push"|"pop"|"default") [':'] [CMacro_PragmaCode]* [')'] |
3 | (none | all | none) | | CMacro_PragmaCode: (',' | CMacro_Number | CMacro_Identifier) |
102 | all all all none 18% 96% 16% | CMacro_Define_Statement: '#' "define" CMacro_Define_Definition [CMacro_Comment] [CMacro_Parameters] [CMacro_RestOfLine] [CMacro_Comment] |
18 | all 2.44(all) all | | CMacro_Parameters: '(' [CMacro_Param]* ')' |
31 | (all | none) | | | CMacro_Param: (CMacro_Parameter_Definition | "...") |
391 | all all all | CMacro_Error_Statement: '#' ("error"|"warn"|"warning") [CMacro_RestOfLine] |
33 | all all all none all 2.03(all) none 30% none all all 15% | CMacro_IfDef_Statement: '#' ("ifdef"|"ifndef") CMacro_Identifier_Reference [CMacro_Comment] CMacro_EndOfLine [CMacro_Element]* [CMacro_IfDefElif]* [CMacro_IfDefElse] [CMacro_EndOfLine] '#' "endif" [CMacro_Comment] |
| CMacro_IfDefCPlusPlus: '#' "ifdef" "__cplusplus" CMacro_EndOfLine "extern" CMacro_Literal '{' CMacro_EndOfLine '#' "endif" CMacro_EndOfLine [CMacro_Element]* '#' "ifdef" "__cplusplus" CMacro_EndOfLine '}' [CMacro_Comment] CMacro_EndOfLine '#' "endif" | ||
| CMacro_IfDefElif: '#' "elif" CMacro_Expression [CMacro_Comment] [CMacro_EndOfLine] [CMacro_Element]* | ||
10 | none all all none all 1.00(all) | | CMacro_IfDefElse: [CMacro_EndOfLine] '#' "else" [CMacro_Comment] CMacro_EndOfLine [CMacro_Element]* |
12 | all all all 25% all 3.00(all) none 17% none all all 8% | CMacro_If_Statement: '#' "if" CMacro_Expression [CMacro_Comment] CMacro_EndOfLine [CMacro_Element]* [CMacro_IfElif]* [CMacro_IfElse] [CMacro_EndOfLine] '#' "endif" [CMacro_Comment] |
| CMacro_IfElif: '#' "elif" CMacro_Expression [CMacro_Comment] [CMacro_EndOfLine] [CMacro_Element]* | ||
2 | all all 50% all 1.00(all) | | CMacro_IfElse: '#' "else" [CMacro_Comment] [CMacro_EndOfLine] [CMacro_Element]* |
4,676 | all all all 1.00(4%) | CMacro_Include_Statement: '#' ("include"|"include_next"|"import") CMacro_IncludeWhat [CMacro_Comment]* |
4,676 | (1% | 99%) | | CMacro_IncludeWhat: (CMacro_Literal | CMacro_IncludeSys) |
CMacro_LineNumber_Statement: '#' ["line"] CMacro_Number CMacro_Literal [CMacro_Number]* | ||
3 | all all all | CMacro_Pragma_Statement: '#' "pragma" CMacro_Pragma_Type |
3 | (none | none | none | none | none | none | none | none | none | none | none | none | none | none | all) | | CMacro_Pragma_Type: ("once" | CMacro_Pragma_CLang | CMacro_Pragma_CodeSeg | CMacro_Pragma_Comment | CMacro_Pragma_Export | CMacro_Pragma_Intrinsic | CMacro_Pragma_Mark | CMacro_Pragma_Message | CMacro_Pragma_Pack | CMacro_Pragma_Region | CMacro_Pragma_RuntimeChecks | CMacro_Pragma_STDC | CMacro_Pragma_Unroll | CMacro_Pragma_Warn | CMacro_Pragma_Warning) |
CMacro_Region_Statement: '#' "region" [CMacro_CommentRestOfLine] CMacro_EndOfLine [CMacro_Element]* [CMacro_EndOfLine] '#' "endregion" [CMacro_CommentRestOfLine] | ||
CMacro_Undef_Statement: '#' "undef" CMacro_Identifier_Reference |
Terminals = 14 (instances=10,919)
Tokens = 61 (instances=20,559)
(*) Statistics are shown in the same order as the Tokens.
Percentages are rounded; 'all' and 'none' mean 100% and 0% before rounding.
For lists, it shows the average number of occurrences, excluding empty lists.