Files
stubser/src/stubser/cfile_parser_loc.h
Martin Winkler 6c446888b4 Functions, their init_ and prototypes with variable parameter "marker"
are stubbed correctly. Actual variable parameter are not tested (yet).
2021-12-15 08:12:34 +01:00

58 lines
2.2 KiB
C

/*!
* @file cfile_parser_loc.h
* @brief
* @details
* Project: \n
* Subsystem: \n
* Module: \n
* Code: GNU-C\n
*
* @date 28.02.2017
* @author Martin Winkler
*/
#ifndef STUBSER_CFILE_PARSER_LOC_H_
#define STUBSER_CFILE_PARSER_LOC_H_
#define CFILE_PARSER_MAX_REGEX_MATCHING_GROUPS 10
#define CPARS_LINE_ENDING "\r\n"
#define CPARS_COMMENT_INLINE "//"
#define CPARS_COMMENT_BLOCK_START "/*"
#define CPARS_COMMENT_BLOCK_END "*/"
#define CPARS_PROTOTYPE_END_C ';'
#define CPARS_PREFIX_STATIC_S "static"
#define CPARS_PREFIX_STATIC2_S "STATIC"
#define CPARS_PREFIX_EXTERN_S "extern"
#define CPARS_EXPRESSION_BASE "^[[:blank:]]*([ _\\*[:alnum:]]* +\\**)([_\\*[:alnum:]]+)"
#define CPARS_REGEX_FUNCTIONPOINTER "^[[:blank:]]*([ _\\*[:alnum:]]* +\\**)\\(([_\\*[:alnum:]]+)\\)(\\([^\\)]*\\))"
#define FUNCTION_BASE CPARS_EXPRESSION_BASE "[[:blank:]]*\\([[:blank:]]*"
#define CPARS_REGEX_FUNCTION FUNCTION_BASE "(.*)\\)[[:blank:]\\{\\};]+[[:blank:]]*"
#define CPARS_REGEX_VARIABLE CPARS_EXPRESSION_BASE "[[:blank:]]*(\\[*[^;=,]*)[[:blank:]]*(\\[*[^;=]*[;=])"
#define CPARS_REGEX_PARAMETER CPARS_EXPRESSION_BASE "[[:blank:]]*(\\[*[^;=]*)"
#define CPARS_STRCMP_PARAMETER_VARIABLE "..."
#define CPARS_REGEX_PARAMETER_FUPTR_SEPA "\\([^\\,)]*(,)" // function pointer parameter separation
#define CPARS_REGEX_PREFIX "("CPARS_PREFIX_EXTERN_S"|EXTERN|"CPARS_PREFIX_STATIC_S"|STATIC|volatile|near|far)[[:blank:]]*(.*)"
#define CPARS_EXPRESSION_START "^[[:blank:]]*([A-Za-z\\_][\\_\\*[:alnum:]]*)"
#define CPARS_EXPRESSION_END "[[:blank:]]*([\\};]+)"
#define CPARS_WARNING_START " W-> "
#define CFILE_PARSER_IS_MATCHGROUP_FUNCTION(matchGroup) (XREGEX_IS_MATCHGROUP(matchGroup, 1) && XREGEX_IS_MATCHGROUP(matchGroup, 2))
/*! @brief Type of function definition */
typedef enum _CELEMENT_TYPE_T
{
CELEMENT_TYPE_UNDEF = 0, /*!< @brief undefined */
CELEMENT_TYPE_INCLUDE = 1, /*!< @brief C #include */
CELEMENT_TYPE_DEFINE = 2, /*!< @brief C #define */
CELEMENT_TYPE_VARIABLE = 3, /*!< @brief Prototype C variable definition */
CELEMENT_TYPE_FUNCTION = 4, /*!< @brief Prototype C function definition */
CELEMENT_TYPE_LAST_ENUM
} celement_type_t;
#endif /* STUBSER_CFILE_PARSER_LOC_H_ */