How to add a token stream filter to clang

I want the front end to ignore some dialect token, like the following example:

// interrupt and using is dialect extension syntax
void cint() interrupt 1 using 2


Firstly, I will extend the TokenKind.def to make ‘interrupt’ and ‘using’ be the keyword;
After the preprocessor and lexer make the code to token stream, I want to do something to filter the dialect-related tokens so that the token stream passed to the parser is clang-compatible. I don’t need to extend the AST. Ignoring the dialect extensions is fine to me.

So my question is , which part should I modify or extend to implement the above functionality?


Chen Rui

You should extend the parser to consume these tokens in whichever places in
the grammar you wish to allow them. (If they can actually appear anywhere,
you could adjust Preprocessor::Lex to discard the tokens, but that's
unlikely to be the best approach.)