当前位置: 首页>>代码示例>>C++>>正文


C++ BaseNode::settable方法代码示例

本文整理汇总了C++中BaseNode::settable方法的典型用法代码示例。如果您正苦于以下问题:C++ BaseNode::settable方法的具体用法?C++ BaseNode::settable怎么用?C++ BaseNode::settable使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在BaseNode的用法示例。


在下文中一共展示了BaseNode::settable方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: parse_import

BaseNode* parse_import(ParseContext& pc) {
	if (pc.getTokens().size() < 2)
		return NULL;

	if (!pc.toke_is(LexToken::IMPORT))
		return NULL;

	pc.nextToken();

	if (!pc.toke_is(LexToken::IDENTIFIER)) {
		parse_err(pc, "Improper import, requires module name.");
		return NULL;
	}
	DexRef mname = create_string("", 0, 32);
	DexRef names[MODULE_MEMB_MAX];
	DexRef varname;
	int i = 0;
	bool has_as = false;
	while (true) {
		varname = pc.getToken().data;
		names[i] = varname;
		str_concat(mname, names[i]);
		i++;
		pc.nextToken();
		if (pc.isLineEnd())
			break;
		if (pc.toke_is(LexToken::AS)) {
			has_as = true;
			break;
		}
		if (!pc.toke_is(LexToken::MEMBER))
			parse_err(pc, "Improper import, requires module name.");
		strc_concat(mname, ".", 1);
	}
	BaseNode* targ = NULL;
	if (has_as) {
		pc.nextToken();
		if (pc.isLineEnd()) {
			parse_err(pc, "Improper use of 'import ... as'.");
		} else {
			targ = parse_value(pc, true);
			if (!pc.isLineEnd() || !targ->settable()) {
				parse_err(pc,
						"Improper use of 'import ... as', requires settable expression.");
			}
		}
	} else {
		VarNode* vn = new VarNode(varname);
		vn->glob = pc.func == NULL;
		targ = vn;
	}
	//cout << mname << endl;
	//cout << varname << endl;
	if (error()){
		delete targ;
		return NULL;
	}
	DexRef fname = path_from_strs(names, i);
	pc.nextLine();
	return create_load_module(targ, mname, fname);
}
开发者ID:ludamad,项目名称:dexscript,代码行数:61,代码来源:nparse.cpp


注:本文中的BaseNode::settable方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。