[cfe-dev] How to add a token stream filter to clang

Richard Smith via cfe-dev cfe-dev at lists.llvm.org
Wed Apr 20 13:52:03 PDT 2016

On Tue, Apr 19, 2016 at 10:49 PM, chenrui at sunwiseinfo.com via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> Hi,
> 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?

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.)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160420/d9cc8840/attachment.html>

More information about the cfe-dev mailing list