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

📄 proc.c

📁 smallbasic for linux
💻 C
字号:
/**	SmallBASIC, library API**	Nicholas Christopoulos**	This program is distributed under the terms of the GPL v2.0 or later*	Download the GNU Public License (GPL) from www.gnu.org*/#include "pproc.h"static char	tmpsb[64];/**	just prints the value of variable 'var'*/void	print_var(var_t *var){	switch ( var->type )	{	case V_STR:		dev_print(var->ptr);		break;	case V_INT:		ltostr(var->i, tmpsb);		dev_print(tmpsb);		break;	case V_NUM:		ftostr(var->n, tmpsb);		dev_print(tmpsb);		break;		}}/**	common error messages*	use it to reduce the code size*/void	err_stackmess()			{ rt_raise("STACK MESS");  }void	err_parm_num()			{ rt_raise("ERROR NUM OF ARG");  }void	err_parm_byref(int n)	{ rt_raise("PARAM %d CANNOT BYREF", n);  }#if defined(_PalmOS)void	err_syntax()	{ rt_raise("SYNTAX ERROR");  }void	err_syntaxsep(int c)	{ rt_raise("MISSING SEPARATOR '%c'", c);  }#endif/**	PROC/FUNC API**	get next parameter as var_t*/void	par_getvar(var_t *var){	byte	code;	code = code_peek();	switch ( code )	{	case	kwTYPE_LINE: case kwTYPE_EOC: case	kwTYPE_SEP:		err_syntax();		return;	default:		eval(var);		break;		};}/**	PROC/FUNC API**	get next parameter as var_t*/void	par_getstr(var_t *var){	byte	code;	code = code_peek();	switch ( code )	{	case	kwTYPE_LINE: case kwTYPE_EOC: case	kwTYPE_SEP:		err_syntax();		return;	default:		eval(var);		break;		};	if	( var->type != V_STR )		v_tostr(var);}/**	PROC/FUNC API**	get next parameter as long*/long	par_getint(){	var_t	var;	long	i;	v_init(&var);	par_getvar(&var);	i = v_getint(&var);	v_free(&var);	return i;}/**	PROC/FUNC API**	get next parameter as double*/double	par_getnum(){	var_t	var;	double	f;	v_init(&var);	par_getvar(&var);	f = v_getval(&var);	v_free(&var);	return f;}/**	PROC/FUNC API*/int		par_getsep(){	int		last_op;	byte	code;	code = code_peek();	switch ( code )	{	case	kwTYPE_SEP:		code_skipnext();		last_op = code_getnext();		return last_op;	default:		err_syntax();		};	return 0;}/**/void	par_getcomma(){	if	( par_getsep() != ',' )	{		if	( !prog_error )				err_syntaxsep(',');		}}/**/void	par_getsemicolon(){	if	( par_getsep() != ';' )	{		if	( !prog_error )				err_syntaxsep(';');		}}/**/void	par_getsharp(){	if	( par_getsep() != '#' )	{		if	( !prog_error )				err_syntaxsep('#');		}}

⌨️ 快捷键说明

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