当前位置: 首页 > wzjs >正文

黄埔免费网站建设金华市建设技工学校教育培训网站

黄埔免费网站建设,金华市建设技工学校教育培训网站,江西省人社窗口作风建设网站,青岛网站建设方案公司目前在使用QtScriptEngine,在利用evaluate注册子函数时,要求用户输入的js文件中的内容仅仅是函数,函数体外,不能出现一些变量的声明、函数的调用等其他代码。 反复咨询DeepSeek后,终于给出了一个目前测试可用的代码&am…

目前在使用QtScriptEngine,在利用evaluate注册子函数时,要求用户输入的js文件中的内容仅仅是函数,函数体外,不能出现一些变量的声明、函数的调用等其他代码。
反复咨询DeepSeek后,终于给出了一个目前测试可用的代码:

bool isPureFunctions(const QString& code) {enum State {Normal,InFunctionBody,InLineComment,InBlockComment,InString};State state = Normal;int braceDepth = 0;bool hasFunction = false;QChar stringQuote;int functionStartDepth = 0;  // 记录函数起始层级的栈for (int i = 0; i < code.length(); ++i) {const QChar c = code[i];const QChar next = (i < code.length()-1) ? code[i+1] : QChar();switch (state) {case Normal:if (c.isSpace()) {continue;} else if (c == '/' && next == '*') {state = InBlockComment;i++; // 跳过 *} else if (c == '/' && next == '/') {state = InLineComment;i++; // 跳过 /} else if (c == 'f' && code.mid(i, 8) == "function") {// 进入函数声明i += 7; // 跳过 "function"state = InFunctionBody;braceDepth = 0;hasFunction = true;functionStartDepth = 0; // 重置层级计数器} else {// 非函数代码立即拒绝if (hasFunction) return false; // 函数后出现其他代码else return false;              // 函数外出现其他代码}break;case InFunctionBody:if (c == '{') {braceDepth++;if (braceDepth == 1) functionStartDepth = i; // 记录函数起始位置} else if (c == '}') {if (--braceDepth == 0) {state = Normal; // 函数体结束} else if (braceDepth < 0) {return false;   // 花括号不匹配}} else if (c == '"' || c == '\'' || c == '`') {state = InString;stringQuote = c;}break;case InLineComment:if (c == '\n') state = Normal;break;case InBlockComment:if (c == '*' && next == '/') {state = Normal;i++; // 跳过 /}break;case InString:if (c == stringQuote && (i == 0 || code[i-1] != '\\')) {state = InFunctionBody;}break;}}// 最终必须回到Normal状态且至少有一个函数return state == Normal && hasFunction;
}

测试:

// 应返回 true 的有效用例
QString validCode = "function foo1(){}\n""function foo2(){ if(true){} }";
qDebug() << isPureFunctions(validCode); // 输出 true// 应返回 false 的无效用例
QString invalidCode = "function foo(){}\n""console.log(123);\n""function bar(){}";
qDebug() << isPureFunctions(invalidCode); // 输出 false
http://www.dtcms.com/wzjs/613144.html

相关文章:

  • 桐乡市建设局网站大通酩悦最好的网站模板
  • 网站如何优化流程wordpress a5
  • php毕业设计代做网站建筑工程网格化管理方案
  • 家禽养殖公司网站怎么做免费素材视频软件app
  • 建站网站关键词大全靖江网站建设制作
  • 做网站图片ps用哪种字体如何为wordpress添加音乐播放器
  • 长春建站模板搭建南宁网站建设 南宁联达亿
  • 网站开发主框架一般用什么布局提高网站权重的作用
  • 网站交互图片怎么做的仿 手机 网站模板html源码
  • 济南网站建设策划方案python编程代码大全
  • 岗厦网站建设网页建站建设教程
  • saas自助建站网站建设与开发是什么岗位
  • 廊坊北京网站建设网站发布之后上传文件路径变了
  • 黄冈网站开发wordpress缓存加速
  • 建设部网站有建筑施工分包南京市住房和城乡建设网站
  • 注册网站怎么开发网站备案完电信
  • 建 新闻 网站成都网站开发技术
  • 网站title 在哪里设置域名证书怎么申请
  • 江西工厂网站建设企业网站建设宣贯
  • 建筑人才招聘网站wordpress早教模板
  • 东莞南城网站开发公司电话小型深圳网站页面设计
  • 美团网站开发网站开发电话话术
  • 网站建设原型图wordpress文章同步微博
  • 清润邯郸网站seo搜索引擎优化论文
  • wap网站建设如何改造熊掌号营销策略理论
  • 做的比较好的时尚网站西宁网站制作公司排名
  • 企业建设网站个人总结淘宝客做网站卖什么好
  • 江西中创建设工程有限公司网站iis怎么搭建asp网站
  • 徐州微网站开发科技特长生包括哪些项目
  • sjz住房建设局网站有什么网站可以做跳转连接的