[cfe-dev] Strategy to modify the raw buffer in the first phase (beginner)
rNoz via cfe-dev
cfe-dev at lists.llvm.org
Tue Oct 24 02:26:49 PDT 2017
Hi,
I want to do my first modification of clang with a simple case (at least
from my point of view). What I expect from this thread? At least one of
this points:
- 1. General overview of the process I should do (eg. you have to alter
the Lexer and Parser: modify X,Y methods of class Z, then expand the
class J with support of the X's new output).
- 2. To be pointed to some classes/methods/functions that are connected
with what I want to achieve (eg. your problem is similar to achieving
'<<< >>>' for Cuda, read the files X, Y, Z related with CUDA).
- 3. Alternative strategies (eg. you will suffer doing it in this way,
much better expanding the Lexer and avoiding to touch the CodeGen).
As you can imagine I wrote stupid (eg.) examples.
My objective is being able to transform every code like this:
> "A: #{A} B: #{B}\n"
to this:
> "A: " << A << " B: " << B << "\n"
So, in cases like this:
> std::cout << "#{var}\n";
will make sense:
> std::cout << var << "\n";
But others like:
> printf("#{var}\n"); auto x = "my string#{x}";
not:
> printf(var << "\n"); auto x = "my string" << x;
But I don't mind. It is a "simple example" to start learning how to
modify clang.
So, my initial strategy would be to receive a string (the source code)
and transform it as raw text, using regexp or not (not important).
I think that I should receive the source code, maybe just before the
preprocessor, do the transformations to every source code (eg. I receive
the source code per file) and just leave it to the next phase of the
compiling process.
Any recommendation? (steps 1, 2 and 3 that I posted above).
Thanks in advance,
rNoz
This thread is opened after solving the problem of compilation speed.
Now is affordable :) Thanks to all in "Too much time to compile clang.
Suggestions for a starter?".
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20171024/a7f324ce/attachment.html>
More information about the cfe-dev
mailing list