Esempio n. 1
0
List * tag_list()
{
	List * list = NULL;

	if( match( STAG ) )
	{
		list = make_list( yylval );	//匹配到开始标签
		advance();
		add_child( list, tag_list() ); //添加孩子
		if( strcmp( yylval->tag_name, list->node->tag_name ) != 0 )	//处理标签不匹配问题
		{
			printf( "发生标签不匹配问题,在.xml文件中%d行的%s标签与在%d行%s标签不匹配!\n", 
				yylval->lineno, yylval->tag_name, list->node->lineno, list->node->tag_name );
			exit( 0 );
		}
		advance();
		add_list( list, tag_list() );	//添加同级标签
	}
	else if( match( TEXT ) )
	{
		list = make_list( yylval );
		advance();
		add_list( list, tag_list() );
	}
	else if( match( ETAG ) )	//匹配到结束标签 直接返回空
		;
	return list;
}
Esempio n. 2
0
tag_list from_string(std::string const &p_string)
{
	GstTagList *tag_list_ = gst_tag_list_new_from_string(p_string.c_str());
	if (tag_list_ == nullptr)
		return tag_list();
	else
		return tag_list(tag_list_);
}
Esempio n. 3
0
int main()
{
	List * root;	/*定义语义树根结点*/
	root = tag_list();	/*递归下降分析返回根结点*/
	print_tree(0, root); /*打印树到屏幕*/
	return 0;
}
Esempio n. 4
0
term_t heap_cons2(heap_t *hp, term_t head, term_t tail)
{
	cons_t *cons;
	int gap = sizeof(*cons);
	cons = (cons_t *)heap_alloc(hp, gap);
	cons->head = head;
	cons->tail = tail;
	return tag_list(cons);
}
Esempio n. 5
0
void add_raw_value(tag_list &p_tag_list, GValue const *p_value, std::string const &p_name, GstTagMergeMode const p_merge_mode)
{
	g_assert(p_value != NULL);
	g_assert(!p_name.empty());

	if (p_tag_list.is_empty())
		p_tag_list = tag_list(gst_tag_list_new_empty());

	gst_tag_list_add_value(p_tag_list.get_tag_list(), p_merge_mode, p_name.c_str(), p_value);
}