草庐IT

abstract-syntax-tree

全部标签

c++ - clang ASTContext.getParents 总是返回一个空列表

我正在基于示例使用LibTooling为clang4.0编写一个工具ClangASTFrontendActionssample.给定当前语句stmt,我想在AST中获取它的直接父级。所以我尝试使用下面的代码来转储stmt的所有父级(用于测试目的):boolVisitStmt(Stmt*s){coutgetParents(currentStmt);autoit=Context->getParents(currentStmt).begin();if(it==Context->getParents(currentStmt).end())cout();parentStmt->dump();}}

C++ 2011 : good syntax to initialize an array in a constructor?

这里我有一个示例类:templateclassMyClass{public:MyClass();~MyClass();protected:T_data[SIZE];};templateMyClass::MyClass()://_data()OR_data({})OR_data{}OR...{;}在默认构造函数中将整个数组初始化为0的正确C++2011语法是什么?非常感谢。 最佳答案 统一初始化语法运行良好:MyClass():_data{}{} 关于C++2011:goodsyntaxt

c++ - 来自 Boost.Spirit 语法的属性:来自 std:vector of boost::variant 的错误

我有一个用于读取棋盘游戏位置描述的工作解析器(国际跳棋,officialgrammar):#include#includenamespacex3=boost::spirit::x3;autoconstcolon=x3::lit(':');autoconstcomma=x3::lit(',');autoconstdash=x3::lit('-');autoconstdot=x3::lit('.');autoconstking=x3::char_('K');autoconstcolor=x3::char_("BW");autoconstnum_sq=x3::int_;autoconstnu

c++ - AST 的树模式匹配。 C++ 中有什么干净的方法吗?

上下文:我需要为抽象语法树编写一些树匹配规则。我想要一种简洁的方式,例如,如果为数组访问提供了数字文字索引(而不是符号索引),则进行匹配。假设我有一个抽象类(即有一个纯虚函数),lvalue。lvalue仅被子类化为2个具体类,variable和array_element。为了以不同的方式处理这两种情况,我可以应用访问者模式(但我认为它在这里有点矫枉过正)或者使用丑陋的dynamic_cast。(我已经使用访问者模式来遍历我的AST和CFG)voidmain(){lvalue*lv=newvariable("foo");//...somehowdoatree-patternmatchi

【机器学习基础】决策树(Decision Tree)

🚀个人主页:为梦而生~关注我一起学习吧!💡专栏:机器学习欢迎订阅!后面的内容会越来越有意思~⭐特别提醒:针对机器学习,特别开始专栏:机器学习python实战欢迎订阅!本专栏针对机器学习基础专栏的理论知识,利用python代码进行实际展示,真正做到从基础到实战!💡往期推荐:【机器学习基础】机器学习入门(1)【机器学习基础】机器学习入门(2)【机器学习基础】机器学习的基本术语【机器学习基础】机器学习的模型评估(评估方法及性能度量原理及主要公式)【机器学习基础】一元线性回归(适合初学者的保姆级文章)【机器学习基础】多元线性回归(适合初学者的保姆级文章)【机器学习基础】对数几率回归(logistic回

c++ - Boost::spirit::qi 定义一个 nullaries 的计算器

我正在尝试为数学表达式编写一个解析器,其中命名变量是boost::spirit中的nullaries|(版本1_51_0),我是全新的。我定义typedefboost::functionValue我的规则将这样声明:qi::ruleexpression,term,others,...;我用这个宏在nullaries上定义二元运算符#defineBINARY_FUNCTOR(name,op)\structname\{\name(Valuex,Valuey):x_(x),y_(y){}\doubleoperator()(){returnx_()opy_();}\Valuex_,y_;\};

c++ - 错误 C2143 : syntax error : missing ';' before '__stdcall"

我在创建COMDLL时遇到了一些问题。我的IClassFactory实现如下所示:include#include#include"AddObj.h"#include"AddObjFactory.h"HRESULT__stdcallCAddFactory::CreateInstance(IUnknown*pUnknownOuter,constIID&iid,void**ppv){if(pUnknownOuter){returnCLASS_E_NOAGGREGATION;}CAddObj*pObject=newCAddObj();if(pObject==NULL){returnE_OUTO

c++ - 如何使用 json 解析器的 boost property_tree 创建空数组节点

我正在尝试在json中创建一个数组节点,其输出如下所示:{node:["12","13"]}但是当数组为空时,它会输出这样的:{node:""}这不是我想要的,我需要这个:{node:[]}我该怎么做?而且我不需要在数字周围加上双引号("")。谁能帮忙?我的代码如下:boost::property_tree::ptreept;boost::property_tree::ptreearray;for(vector::const_iteratoriter=v.begin();iter!=v.end();++iter){boost::property_tree::ptreenode;node

c++ - 'non-virtual interface' 和 'abstract interface' 有什么区别?

我正在用C++实现设计模式,我希望我的类通过组合来利用接口(interface),这让我研究了实现接口(interface)的不同方法。我想澄清一下这个术语的定义。 最佳答案 非虚拟接口(interface)是一个公共(public)成员函数,它不是虚拟的,但通常希望根据可覆盖的虚拟函数来实现:classInterface{public:intcompute(){returncompute_impl();}private:virtualintcompute_impl()=0;protected:virtual~Interface()

c++ - 如何从 boost::property_tree 获取枚举?

如何从boost::property_tree中获取枚举?这是我的“非工作”示例。配置文件EMISSION::EMIT142main.cpp#include#include#includeintmain(){enumclassEMISSION{EMIT1,EMIT2};enumEMISSIONmyEmission;//InitializetheXMLfileintoproperty_treeboost::property_tree::ptreept;read_xml("config.xml",pt);//testenum(SUCCESS)myEmission=EMISSION::EMI