C ++从JavaScript源提取函数定义

时间:2014-09-24 21:49:23

标签: c++ parsing

我想知道如何处理这个问题。我正在编写一个将读取JavaScript文件的C ++脚本。我想要做的是创建一个在其中找到的JavaScript函数的映射向量。我可以使用正则表达式轻松获得名称。但是,我还希望将整个函数本身存储为字符串。例如:

function myfunc (a,b) {
    return a * b;
}

我知道如何获得字符串" myfunc"对于函数名称,但我也希望从function到结束}获取整个定义。我能想到的最好的方法是遍历从function开始的字符串中的字符并保持开括号和右括号的计数,存储字符串位置,然后使用这些位置将子字符串复制到新变量。但这似乎是一件愚蠢的事情。

修改

这里是我正在谈论尝试的草图:

std::string::size_type finalBracket (std::string::size_type start) {

    std::string startAt (parseablecode, start);
    int bracketCount = 0;
    std::string::size_type closePosition = 0;
    bool initial = false;

    for(char& c : startAt) {

        if (c == '{') {

            ++bracketCount;

            if (!initial) initial = true;

        }

        if (c == '}')
            --breakCount;


        if (initial && bracketCount == 0) {
            closePosition += start; 
            break;

        }

        ++closePosition;

    }

    return closePosition;

}

0 个答案:

没有答案