Go to the source code of this file.
Functions/Subroutines | |
| logical function, public | evaluate_expression (expr, macros, val) |
| Evaluates a preprocessor-style expression with macro substitution. Tokenizes the input expression, expands macros where appropriate, parses it according to operator precedence, and computes the integer result. Returns .true. if evaluation succeeded and the result is non-zero. | |
| recursive integer function, public | parse_expression (tokens, ntokens, pos, macros) |
Parses a sequence of tokens starting at position pos as a full expression. Entry point for the recursive descent parser. Delegates to parse_or(). | |
| recursive integer function | parse_conditional (tokens, ntokens, pos, macros) |
| Parses conditional expressions (?:). Right-associative. | |
| recursive integer function | parse_or (tokens, ntokens, pos, macros) |
Parses logical OR expressions (||). | |
| recursive integer function | parse_and (tokens, ntokens, pos, macros) |
Parses logical AND expressions (&&). | |
| recursive integer function | parse_bitwise_or (tokens, ntokens, pos, macros) |
Parses bitwise OR expressions (|). | |
| recursive integer function | parse_bitwise_xor (tokens, ntokens, pos, macros) |
Parses bitwise XOR expressions (^). | |
| recursive integer function | parse_bitwise_and (tokens, ntokens, pos, macros) |
Parses bitwise AND expressions (&). | |
| recursive integer function | parse_equality (tokens, ntokens, pos, macros) |
Parses equality/inequality expressions (==, @param[in] tokens Array of tokens to parse @param[in] ntokens Number of valid tokens in the array @param[inout] pos Current parsing position (updated as tokens are consumed) @param[in] macros Defined macros for expansion anddefined()` checks. | |
| recursive integer function | parse_relational (tokens, ntokens, pos, macros) |
Parses relational expressions (<, >, <=, >=). | |
| recursive integer function | parse_shifting (tokens, ntokens, pos, macros) |
Parses shift expressions (<<, >>). | |
| recursive integer function | parse_additive (tokens, ntokens, pos, macros) |
Parses additive expressions (+, -). | |
| recursive integer function | parse_multiplicative (tokens, ntokens, pos, macros) |
Parses multiplicative expressions (*, /, %). | |
| recursive integer function | parse_power (tokens, ntokens, pos, macros) |
Parses exponentiation (**). Right-associative. | |
| recursive integer function | parse_unary (tokens, ntokens, pos, macros) |
Parses unary operators ( @param[in] tokens Array of tokens to parse @param[in] ntokens Number of valid tokens in the array @param[inout] pos Current parsing position (updated as tokens are consumed) @param[in] macros Defined macros for expansion anddefined()` checks. | |
| recursive integer function | parse_atom (tokens, ntokens, pos, macros) |
Parses primary expressions: numbers, identifiers, defined(...), parentheses. | |