본문으로 바로가기

출처: https://github.com/amecky/ds_vm

 

문자열로 수식이 주어 졌을 때 계산을 수행하는 라이브러리.. C로 되어 있어서 C++에서도 사용 가능하고.. 변수 추가 및 가로 우선순위와 사용자 함수도 추가가 가능한.. 아주 빠른 라이브러리..

void mul_method(vm_stack* stack) {
    float a = VM_POP(stack);
    float b = VM_POP(stack);
    VM_PUSH(stack, a*b);
}

int main() {
	vm_context* ctx = vm_create_context();
	vm_add_function(ctx, "mul", mul_method, 17, 2);
	vm_add_variable(ctx, "A", 10.0f);
	vm_add_variable(ctx, "B", 2.0f);
	vm_add_variable(ctx, "C", 3.0f);
	vm_token tokens[64];
	int ret = vm_parse(ctx, "mul(2,2) * A + (B+C)", tokens, 64);
	float r = 0.0f;
	int code = vm_run(ctx, tokens, ret, &r);
	if (code == 0) {
		printf("%f", r);
	}
	vm_destroy_context(ctx);
}

ds_vm.rar
0.00MB