⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fincsys.c

📁 FinC is Fava in C! A C-like syntax language. It s designed to apply to embededd system.
💻 C
📖 第 1 页 / 共 3 页
字号:
void finc_sys_comma( FinCNode* p_node){	FinCNode* l_node1;	FinCNode* l_node2;	FinCType* l_type;	FinCData* l_data;	l_node1 = (FinCNode*)vector_at (p_node->vector_node, 0);	l_node2 = (FinCNode*)vector_at (p_node->vector_node, 1);	finc_node_evaluate (l_node1);	finc_node_evaluate (l_node2);	l_type = finc_type_new (l_node2->data->type->type, FinCArrayType_None, 0);	l_data = finc_data_new (l_type, NULL);	unref(l_type);		unref(l_node1);	unref(l_node2);	unref(p_node->data);	finc_data_assign(l_data, l_node2->data);	unref(l_node2);		p_node->data = l_data;}void finc_sys_condition( FinCNode* p_node ){	FinCNode* l_node1;	FinCNode* l_node2;	FinCNode* l_node3;	FinCType* l_type;	FinCData* l_data;	l_node1 = (FinCNode*)vector_at (p_node->vector_node, 0);	l_node2 = (FinCNode*)vector_at (p_node->vector_node, 1);	l_node3 = (FinCNode*)vector_at (p_node->vector_node, 2);	finc_node_evaluate (l_node1);	if ( access ( finc_data_get_raw_data ( l_node1->data ), 0, Bool ) )	{		finc_node_evaluate ( l_node2 );		l_type = finc_type_new(l_node2->data->type->type, FinCArrayType_None, 0);		l_data = finc_data_new(l_type, NULL);		unref(l_type);				finc_data_assign(l_data, l_node2->data);		p_node->data = l_data;	}	else	{		finc_node_evaluate ( l_node3 );		l_type = finc_type_new(l_node3->data->type->type, FinCArrayType_None, 0);		l_data = finc_data_new(l_type, NULL);		unref(l_type);				finc_data_assign(l_data, l_node3->data);		p_node->data = l_data;	}	unref(l_node1);	unref(l_node2);	unref(l_node3);}void finc_sys_logic_or ( FinCNode* p_node ){	FinCNode * l_left;	FinCNode* l_right;	FinCType* l_type;	FinCData* l_data;	FinCData* l_data_left;	FinCData* l_data_right;	l_left = (FinCNode*)vector_at ( p_node->vector_node, 0 );	l_right = (FinCNode*)vector_at ( p_node->vector_node, 1 );	finc_node_evaluate ( l_left );	l_data_left = finc_node_take_data (l_left);	finc_node_evaluate ( l_right );	l_data_right = finc_node_take_data (l_right);	l_type = finc_type_new ( FinCType_Bool, FinCArrayType_None, 0 );	l_data = finc_data_new ( l_type, NULL );	unref ( l_type );	access ( finc_data_get_raw_data ( l_data ), 0, int ) =	    access ( finc_data_get_raw_data ( l_data_left ), 0, int ) ||	    access ( finc_data_get_raw_data ( l_data_right ), 0, int );	unref ( l_left );	unref ( l_right );	unref (l_data_left);	unref (l_data_right);	unref ( p_node->data );	p_node->data = l_data;}void finc_sys_logic_and ( FinCNode* p_node ){	FinCNode * l_left;	FinCNode* l_right;	FinCType* l_type;	FinCData* l_data;	FinCData* l_data_left;	FinCData* l_data_right;	l_left = (FinCNode*)vector_at ( p_node->vector_node, 0 );	l_right = (FinCNode*)vector_at ( p_node->vector_node, 1 );	finc_node_evaluate ( l_left );	l_data_left = finc_node_take_data (l_left);	finc_node_evaluate ( l_right );	l_data_right = finc_node_take_data (l_right);	l_type = finc_type_new ( FinCType_Bool, FinCArrayType_None, 0 );	l_data = finc_data_new ( l_type, NULL );	unref ( l_type );	access ( finc_data_get_raw_data ( l_data ), 0, int ) =	    access ( finc_data_get_raw_data ( l_left->data ), 0, int ) &&	    access ( finc_data_get_raw_data ( l_right->data ), 0, int );	unref ( l_left );	unref ( l_right );	unref (l_data_left);	unref (l_data_right);	unref ( p_node->data );	p_node->data = l_data;}void finc_sys_add ( FinCNode* p_node ){	FinCNode * l_left;	FinCNode* l_right;	FinCType* l_type;	FinCData* l_data;	String* l_string;	FinCData* l_data_left;	FinCData* l_data_right;	l_data = NULL;		l_left = (FinCNode*)vector_at ( p_node->vector_node, 0 );	l_right = (FinCNode*)vector_at ( p_node->vector_node, 1 );	finc_node_evaluate ( l_left );	l_data_left = finc_node_take_data (l_left);	finc_node_evaluate ( l_right );	l_data_right = finc_node_take_data (l_right);	if ( l_data_left->type->type & FinCType_Int )	{		l_type = finc_type_new ( FinCType_Int, FinCArrayType_None, 0 );		l_data = finc_data_new ( l_type, NULL );		unref ( l_type );		access ( finc_data_get_raw_data ( l_data ), 0, int ) =		    access ( finc_data_get_raw_data ( l_data_left ), 0, int ) +		    access ( finc_data_get_raw_data ( l_data_right ), 0, int );	}	else if ( l_data_left->type->type & FinCType_Float )	{		l_type = finc_type_new ( FinCType_Float, FinCArrayType_None, 0 );		l_data = finc_data_new ( l_type, NULL );		unref ( l_type );		access ( finc_data_get_raw_data ( l_data ), 0, float ) =		    access ( finc_data_get_raw_data ( l_data_left ), 0, float ) +		    access ( finc_data_get_raw_data ( l_data_right ), 0, float );	}	else if ( l_data_left->type->type & FinCType_String )	{		l_type = finc_type_new ( FinCType_String, FinCArrayType_None, 0 );		l_data = finc_data_new ( l_type, NULL );		unref ( l_type );		l_string = string_new ();		string_set ( l_string, finc_data_get_string ( l_data_left ) );		string_add ( l_string, finc_data_get_string ( l_data_right ) );		finc_data_set_string ( l_data, l_string );	}	else	{		finc_lang_error( "I don't know how to add this two object." );	}	unref ( l_left );	unref ( l_right );	unref ( l_data_left );	unref ( l_data_right );	unref ( p_node->data );	p_node->data = l_data;}void finc_sys_sub ( FinCNode* p_node ){	FinCNode * l_left;	FinCNode* l_right;	FinCType* l_type;	FinCData* l_data;	FinCData* l_data_left;	FinCData* l_data_right;	l_left = (FinCNode*)vector_at ( p_node->vector_node, 0 );	l_right = (FinCNode*)vector_at ( p_node->vector_node, 1 );	finc_node_evaluate ( l_left );	l_data_left = finc_node_take_data (l_left);	finc_node_evaluate ( l_right );	l_data_right = finc_node_take_data (l_right);	if ( l_data_left->type->type & FinCType_Short )	{		l_type = finc_type_new ( FinCType_Int, FinCArrayType_None, 0 );		l_data = finc_data_new ( l_type, NULL );		unref ( l_type );		access ( finc_data_get_raw_data ( l_data ), 0, short ) =		    access ( finc_data_get_raw_data ( l_data_left ), 0, short ) -		    access ( finc_data_get_raw_data ( l_data_right ), 0, short );	}	if ( l_data_left->type->type & FinCType_Int )	{		l_type = finc_type_new ( FinCType_Int, FinCArrayType_None, 0 );		l_data = finc_data_new ( l_type, NULL );		unref ( l_type );		access ( finc_data_get_raw_data ( l_data ), 0, int ) =		    access ( finc_data_get_raw_data ( l_data_left ), 0, int ) -		    access ( finc_data_get_raw_data ( l_data_right ), 0, int );	}	if ( l_data_left->type->type & FinCType_Float )	{		l_type = finc_type_new ( FinCType_Float, FinCArrayType_None, 0 );		l_data = finc_data_new ( l_type, NULL );		unref ( l_type );		access ( finc_data_get_raw_data ( l_data ), 0, float ) =		    access ( finc_data_get_raw_data ( l_data_left ), 0, float ) -		    access ( finc_data_get_raw_data ( l_data_right ), 0, float );	}	unref ( l_left );	unref ( l_right );	unref (l_data_left);	unref (l_data_right);	unref ( p_node->data );	p_node->data = l_data;}void finc_sys_mul ( FinCNode* p_node ){	FinCNode * l_left;	FinCNode* l_right;	FinCType* l_type;	FinCData* l_data;	FinCData* l_data_left;	FinCData* l_data_right;	l_data = NULL;	l_left = (FinCNode*) vector_at ( p_node->vector_node, 0 );	l_right = (FinCNode*) vector_at ( p_node->vector_node, 1 );	finc_node_evaluate ( l_left );	l_data_left = finc_node_take_data (l_left);	finc_node_evaluate ( l_right );	l_data_right = finc_node_take_data (l_right);	if ( l_data_left->type->type & FinCType_Short )	{		l_type = finc_type_new ( FinCType_Int, FinCArrayType_None, 0 );		l_data = finc_data_new ( l_type, NULL );		unref ( l_type );		access ( finc_data_get_raw_data ( l_data ), 0, short ) =		    access ( finc_data_get_raw_data ( l_data_left ), 0, short ) *		    access ( finc_data_get_raw_data ( l_data_right ), 0, short );	}	if ( l_data_left->type->type & FinCType_Int )	{		l_type = finc_type_new ( FinCType_Int, FinCArrayType_None, 0 );		l_data = finc_data_new ( l_type, NULL );		unref ( l_type );		access ( finc_data_get_raw_data ( l_data ), 0, int ) =		    access ( finc_data_get_raw_data ( l_data_left ), 0, int ) *		    access ( finc_data_get_raw_data ( l_data_right ), 0, int );	}	if ( l_data_left->type->type & FinCType_Float )	{		l_type = finc_type_new ( FinCType_Float, FinCArrayType_None, 0 );		l_data = finc_data_new ( l_type, NULL );		unref ( l_type );		access ( finc_data_get_raw_data ( l_data ), 0, float ) =		    access ( finc_data_get_raw_data ( l_data_left ), 0, float ) *		    access ( finc_data_get_raw_data ( l_data_right ), 0, float );	}	unref ( l_left );	unref ( l_right );	unref (l_data_left);	unref (l_data_right);	unref ( p_node->data );	p_node->data = l_data;}void finc_sys_div ( FinCNode* p_node ){	FinCNode * l_left;	FinCNode* l_right;	FinCType* l_type;	FinCData* l_data;	FinCData* l_data_left;	FinCData* l_data_right;	l_left = (FinCNode*)vector_at ( p_node->vector_node, 0 );	l_right = (FinCNode*)vector_at ( p_node->vector_node, 1 );	finc_node_evaluate ( l_left );	l_data_left = finc_node_take_data (l_left);	finc_node_evaluate ( l_right );	l_data_right = finc_node_take_data (l_right);	if ( l_data_left->type->type & FinCType_Short )	{		l_type = finc_type_new ( FinCType_Int, FinCArrayType_None, 0 );		l_data = finc_data_new ( l_type, NULL );		unref ( l_type );		access ( finc_data_get_raw_data ( l_data ), 0, short ) =		    access ( finc_data_get_raw_data ( l_data_left ), 0, short ) /		    access ( finc_data_get_raw_data ( l_data_right ), 0, short );	}	if ( l_data_left->type->type & FinCType_Int )	{		l_type = finc_type_new ( FinCType_Int, FinCArrayType_None, 0 );		l_data = finc_data_new ( l_type, NULL );		unref ( l_type );		access ( finc_data_get_raw_data ( l_data ), 0, int ) =		    access ( finc_data_get_raw_data ( l_data_left ), 0, int ) /		    access ( finc_data_get_raw_data ( l_data_right ), 0, int );	}	if ( l_data_left->type->type & FinCType_Float )	{		l_type = finc_type_new ( FinCType_Float, FinCArrayType_None, 0 );		l_data = finc_data_new ( l_type, NULL );		unref ( l_type );		access ( finc_data_get_raw_data ( l_data ), 0, float ) =		    access ( finc_data_get_raw_data ( l_data_left ), 0, float ) /		    access ( finc_data_get_raw_data ( l_data_right ), 0, float );	}	unref ( l_left );	unref ( l_right );	unref (l_data_left);	unref (l_data_right);	unref ( p_node->data );	p_node->data = l_data;}void finc_sys_import ( FinCNode* p_node ){	FinCNode * l_node;	FinCData* l_data;	String* l_text;	l_node = (FinCNode*)vector_at ( p_node->vector_node, 0 );	finc_node_evaluate ( l_node );	l_data = l_node->data;	unref ( l_node );	if ( l_data->type->type & FinCType_String )	{		l_text = finc_data_get_string ( l_data );		l_node = finc_lang_load ( l_text );		if ( l_node )		{			finc_node_evaluate ( l_node );			unref ( l_node );		}		unref ( l_text );	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -