📄 proc.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 + -