58 lines
2.2 KiB
C
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_ */
|