[llvm-dev] General question - better descriped.
Steven Truppe via llvm-dev
llvm-dev at lists.llvm.org
Thu Jun 20 12:32:04 PDT 2019
I explain it in more detail:
I'm writing an application that works completely with nodes (think about
a node like a function with parameters and in and output slots. there
will be type-nodes like vec3f, int, float, etc. and operation nodes (the
functions that are predefined). So as far as i know i need clang to
parse and create an AST from the nodes (which have access to the
predefined functions and variables). The nodes that are create with a
GUI and the user can connect those nodes to create higher order
functions. (if you know houdini you might know the system i'm trying to
And the code should be C++ (for the predefined functions and the
operator nodes). So no own language just parse and execute in realtime a
self created AST (with predefined functions that must be available for
the code that every operator node has included. More like a graphical
interface to let the use create it's own AST and then run it in realtime
(so the user don' t need programming skills and can create smaller
applications only with the graphical interface.
I was not able to find a clang book, only for llvm and they don't go
into much detail when it comes to clang.
I hope someone here can point me in the right direction (name of a clang
book or links to the documentation that i need to get things done.
On 20.06.19 20:52, mayuyu.io wrote:
> As far as I understand it you are basically trying to create your own domain specific language for scientific computation?
> Clang seems to kinda match what you need but I don’t think it’s able to support function definition in another function which sounds like something you’d need. Your best approach would be using some lexer/parser generate tool to code your own compiler frontend (GREAT DEAL OF WORK) or hack up libClang a bit. Alternatively there are a bunch of readily usable LLVM based languages like Halide that are designed for generating efficient tensor computation code so changing your workflow a bit to re-use those libraries/frameworks is probably a better idea, in my humble opinion. Unless I’m missing something obvious here.
>> 在 2019年6月20日，19:01，Steven Truppe via llvm-dev <llvm-dev at lists.llvm.org> 写道：
>> Hi everyone,
>> i'm currently trying to write an application that let you "code" with
>> nodes. (think of a node like a function that has input and output slots
>> that can get connected).
>> I need a few functions that are predefined and can be used in the code
>> (so i want to parse and create an AST for those functions/variables and
>> then i need to parse C++ code (one node has c++ code that should be
>> executed. So in the end i've nodes that are for types, then one for
>> operations (the functions).
>> The code from the nodes must be able to run the code from it's node with
>> the parameters i pass to the node's slots or in the node itself and i
>> need it to be able to create own functions that must be available in the
>> code of the nodes.
>> so for example i've a typenode that declares and defines variables, for
>> example vec3f for 3d vector types.
>> Now my question would be: Where should i start reading or is there a
>> special article how to achive what i want ?? As far as i know i need
>> clang to parse my own functions so he knows about my types and my
>> functions (one for each operation nodes and the structure declarations).
>> this creates one AST for each type/function). then i need to build an
>> AST for my own nodes that must be interpreted and compiled with llvm and
>> then run the code at runtime.
>> I hope one of you guys can point me in the right direction because i'm
>> completely new to clang and llvm (but i found a book about "learning
>> llvm basic libaries that helps a bit but they do not talk much about
>> clang (so i only know the basics about llvm and have not much of a clue
>> about clang.
>> best regards,
>> Steven Truppe
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
More information about the llvm-dev