sheepy

build system (sheepy) and package manager (spm) for C
git clone https://spartatek.se/git/sheepy.git
Log | Files | Refs | README | LICENSE

Engine_body (2701B)


      1 
      2         /*_________________________________________________________________________
      3          *  Tokens:      
      4          *                                                                        
      5          *  Allow public access.
      6          *
      7          *  Tokens are placed directly before the buffer. They are one of the most
      8          *  used variables. The most used variables shall be stored close to each
      9          *  other, in order to prevent cache misses.                               
     10          * 
     11          *  Note, that the token queue is also implemented from higher addresses 
     12          *  to lower addresses. It is assumed that it is most likely only filled
     13          *  at the top, and thus the addresses close to the buffer shall be used
     14          *  more often than the addresses far from it.                            */
     15 #       ifdef QUEX_OPTION_TOKEN_POLICY_QUEUE
     16             QUEX_NAME(TokenQueue)  _token_queue;  
     17 #           if ! defined(QUEX_OPTION_USER_MANAGED_TOKEN_MEMORY)
     18             uint8_t            __memory_token_queue[sizeof(QUEX_TYPE_TOKEN)*QUEX_SETTING_TOKEN_QUEUE_SIZE];
     19 #           endif
     20 #       else
     21             QUEX_TYPE_TOKEN*   token;         
     22 #           if ! defined(QUEX_OPTION_USER_MANAGED_TOKEN_MEMORY)
     23             QUEX_TYPE_TOKEN    __memory_token;
     24 #           endif
     25 #       endif
     26 
     27         char*              __input_name;
     28         QUEX_NAME(Buffer)  buffer;
     29 
     30 #if     defined(QUEX_OPTION_AUTOMATIC_ANALYSIS_CONTINUATION_ON_MODE_CHANGE) \
     31      || defined(QUEX_OPTION_ASSERTS)
     32         /* When a mode change happens and the user does not 'return' but 'CONTINUE'
     33          * an error must be logged, since the following characters are still swallowed
     34          * by the current function and not the new one. For this one needs to return and
     35          * then continue further.                                                 */
     36         QUEX_NAME(AnalyzerFunctionP)  DEBUG_analyzer_function_at_entry;
     37 #       endif
     38 
     39         /* Each mode has a dedicated analyzer function.  The function pointer
     40          * to the currently active mode's function is stored redundantly in 
     41          * 'current_analyzer_function' to accelerate the access to it.            */
     42         QUEX_NAME(AnalyzerFunctionP)  current_analyzer_function;
     43         QUEX_NAME(Mode)*              __current_mode_p; 
     44 
     45         QUEX_NAME(ModeStack)                                    _mode_stack;
     46 
     47         __QUEX_IF_COUNT(QUEX_NAME(Counter)                      counter;)
     48         __QUEX_IF_STRING_ACCUMULATOR(QUEX_NAME(Accumulator)     accumulator;)
     49         __QUEX_IF_POST_CATEGORIZER(QUEX_NAME(Dictionary)        post_categorizer;)
     50         __QUEX_IF_INCLUDE_STACK(struct QUEX_NAME(Memento_tag)*  _parent_memento;)
     51