kkhaike
V2EX  ›  问与答

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

  •  
  •   kkhaike · Nov 30, 2015 · 2000 views
    This topic created in 3886 days ago, the information mentioned may be changed or developed.

    正在做个 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,和 () 内可选

    Supplement 1  ·  Dec 1, 2015
    忘了,其实还不够复杂,难点是后面参数的递归
    '''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
    '''
    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3494 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 04:58 · PVG 12:58 · LAX 21:58 · JFK 00:58
    ♥ Do have faith in what you're doing.