V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kkhaike
V2EX  ›  问与答

如何使用 javascript 优雅的解析 cpp 的函数声明

  •  
  •   kkhaike · 2015-11-30 17:18:47 +08:00 · 1439 次点击
    这是一个创建于 3075 天前的主题,其中的信息可能已经有所发展或是发生改变。

    正在做个 ycmd 前端,要解析 ycmd 的代码完成返回,假设有如下返回( cpp ,想了个较复杂的)

    const foo::bar::cls * foo::bar::func<T1, T2>( const foo::bar::t1 * p1, const foo::bar::t1 * p2 ) const
    

    需要提取出

    return: const foo::bar::cls *
    class: foo::bar (func 前的)
    text: func<T1, T2>( const foo::bar::t1 * p1, const foo::bar::t1 * p2 )
    snippet: func<${1:T1}, ${2:T2}>( ${3:const foo::bar::t1 * p1}, ${4:const foo::bar::t1 * p2} )

    请问:如何优雅的用 javascript 解析。
    我现在的做法是自己倒着逐字符判断提取,总感觉不够优雅。

    PS :有没有可能把类构造声明能一起,就是 return,和 () 内可选

    第 1 条附言  ·  2015-12-01 21:59:35 +08:00
    忘了,其实还不够复杂,难点是后面参数的递归
    '''cpp
    const foo::bar::cls * foo::bar::func<T1, T2>( const foo::bar::t1<foo::bar::t3, foo::bar::t4> * p1, const foo::bar::t1 * p2 ) const
    '''
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2281 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:30 · PVG 15:30 · LAX 00:30 · JFK 03:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.