[LLVMdev] Rolling my own LLVM assembly language parser

John Criswell criswell at cs.uiuc.edu
Wed Mar 25 10:12:34 PDT 2009


jstanier wrote:
> Hi everyone,
>
> I'm currently in the first year of my PhD, and I'm going to be looking at an
> experimental IR for my thesis. After looking at a variety of research
> compilers I've come to the conclusion that LLVM is the nicest to work with
> for my purposes. I was considering writing the code to construct this
> experimental IR from LLVM assembly, and then at the end of the process (i.e.
> new optimisations and transformations, etc.) I'll translate back into LLVM
> assembly to allow compilation to continue. This keeps everything modular,
> means I can work with "real" languages rather than toy ones, and so on.
>   
It seems to me that an easier approach would be to convert in-memory
LLVM IR to your experimental IR using the LLVM libraries, then do
whatever you do with your experimental IR, and then convert the code
back into in-memory LLVM IR for LLVM based optimizations and code
generation.  The libraries for manipulating LLVM IR are well designed,
reasonably documented, and seem to me to be easier to work with than
creating your own LLVM IR parser.

-- John T.

> I was thinking of generating my own lexer and parser for LLVM assembly. I'm
> aware that between the specification here:
>
> http://llvm.org/docs/LangRef.html
>
> and also the comments in LLParser.cpp there is information about the grammar
> for .ll files, but is there any documentation that simply states the full
> grammar, much in the style of this C grammar:
>
> http://www.lysator.liu.se/c/ANSI-C-grammar-y.html
>
> or this Python grammar?
>
> http://www.python.org/doc/2.5.2/ref/grammar.txt
>
> Does anyone have any thoughts or experience with parsing .ll files? I'd like
> to add that if I've managed to somehow miss the document I'm looking for,
> then I'm willing to make a paper dunce hat and wear it for the rest of the
> week.
>
> Best,
>
> James
>   




More information about the llvm-dev mailing list