[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