[cfe-dev] Support a new C-like language by libclang?

Jovi Zhangwei jovi.zhangwei at gmail.com
Wed Jan 7 17:36:19 PST 2015


Hi,

On Wed, Jan 7, 2015 at 4:55 PM, mats petersson <mats at planetcatfish.com> wrote:
> And you want to DO what, exactly with it, after you have parsed it?
>
> And does your script use ALL of C's functionality?
>

Some functions will be compiled to bpf bytecode and inject into
kernel(run in kernel), some functions
in one script will be compiled to x86_64 instruction which run in userspace.

(There have one project called ktap, www.ktap.org, mainly purpose for
kernel dynamic tracing, probably you knows systemtap,
 ktap is similar like systemtap. There will have a bpf backend for
llvm, now I'm just think how to integrating ktap and bpf)

Some basic requirement of this new frontend is:
1). support new keywords, like trace, trace_end, argstr.
2). support table syntax, also multiple key table. C language don't
support table syntax at all.
3). data structure info retrieve from debuginfo(like vmlinux), not
defined in script or header file.

Do you think my design can achieve by change some part of clang(lex,
etc) and reuse rest library of clang? or have better solution?

Thank you.

> --
> Mats
>
> On 7 January 2015 at 23:58, Jovi Zhangwei <jovi.zhangwei at gmail.com> wrote:
>> Hi,
>>
>> On Tue, Jan 6, 2015 at 4:16 PM, Nikola Smiljanic <popizdeh at gmail.com> wrote:
>>> Yes, you'd have to modify clang to lex/parse/sema your
>>> keywords/extensions/whatever.
>>>
>>
>> Is there have a simple solution without change to much on clang?
>>
>> In my case, I want to parse script which have custom language based on
>> C. The script just like below:
>>
>> trace syscalls:*
>> {
>>     print(argstr);
>> }
>>
>> Actually there just have few new keywords(like trace, trace_end) in
>> this new language, all others in C.
>>
>> Any guide on this?
>>
>> Thank you.
>>
>>> On Wed, Jan 7, 2015 at 10:15 AM, Jovi Zhangwei <jovi.zhangwei at gmail.com>
>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> I'm new to clang world, here I have one question about libclang or
>>>> libtooling, I would be very appreciate if anyone can help me.
>>>>
>>>> Currently I want to develop a new language, which is C like, just some new
>>>> syntax sugars on top of C language, I can modify clang lexer code to make
>>>> that, or I can use translator, but if this requirement can be done by
>>>> libclang or libtooling, that's perfect simple for me.
>>>>
>>>> My direct impression is there have no way to change language syntax by
>>>> libclang/libtooling, libclang/libtooling only can parse and analysis on C
>>>> family language, no chance to support other language by library, is this
>>>> correct?
>>>>
>>>> Thank you.
>>>>
>>>> Jovi
>>>>
>>>> _______________________________________________
>>>> cfe-dev mailing list
>>>> cfe-dev at cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>>>
>>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev



More information about the cfe-dev mailing list