Loading...
Searching...
No Matches
operators.f90 File Reference

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.