/* TODO: determine if constant, global, or local */
switch (*skip) {
/* VECTOR */ case 'V': {
+ float val1;
+ float val2;
+ float val3;
+
const char *find = skip + 7;
while (*find == ' ' || *find == '\t') find++;
- printf("found VECTOR %s\n", find);
+
+ /*
+ * Parse all three elements of the vector. This will only
+ * pass the first try if we hit a constant, otherwise it's
+ * a global.
+ */
+ #define PARSE_ELEMENT(X,Y,Z) \
+ if (isdigit(*X) || *X == '-'||*X == '+') { \
+ bool negated = (*X == '-'); \
+ if (negated || *X == '+') { X++; } \
+ Y = (negated)?-atof(X):atof(X); \
+ X = strchr(X, ','); \
+ Z \
+ }
+
+ PARSE_ELEMENT(find, val1, { if(find) { find +=3; }});
+ PARSE_ELEMENT(find, val2, { if(find) { find +=2; }});
+ PARSE_ELEMENT(find, val3, { if(find) { find +=1; }});
+ #undef PARSE_ELEMENT
+
+ printf("X:[0] = %f\n", val1);
+ printf("Y:[1] = %f\n", val2);
+ printf("Z:[2] = %f\n", val3);
+
break;
}
/* ENTITY */ case 'E': {
mem_d(name);
return false;
}
- /* reassign name */
- mem_d(name);
- name = util_strchp(name, strchr(name, ','));
-
+ *strchr(name, ',')='\0';
+
/*
* Now add the following items to the code system:
* function