• dodji's avatar
    Generate virtual locations for tokens · ce70f433
    dodji authored
    This second instalment uses the infrastructure of the previous patch
    to allocate a macro map for each macro expansion and assign a virtual
    location to each token resulting from the expansion.
    
    To date when cpp_get_token comes across a token that happens to be a
    macro, the macro expander kicks in, expands the macro, pushes the
    resulting tokens onto a "token context" and returns a dummy padding
    token. The next call to cpp_get_token goes look into the token context
    for the next token [which is going to result from the previous macro
    expansion] and returns it.  If the token is a macro, the macro expander
    kicks in and you know the story.
    
    This patch piggy-backs on that macro expansion process, so to speak.
    First it modifies the macro expander to make it create a macro map for
    each macro expansion. It then allocates a virtual location for each
    resulting token.  Virtual locations of tokens resulting from macro
    expansions are then stored on a special kind of context called an...
    ce70f433
traditional.c 31.8 KB