--- /dev/null
+/* Ragel State Machine for tokenizing text */\r
+#include <stdio.h>\r
+#include <string.h>\r
+#include <apc/apc.h>\r
+#include <apc/parser.tab.h>\r
+\r
+\r
+int ipow(int, int);\r
+int ttov(const uint8_t* , int);\r
+uint64_t ttor(const uint8_t* , int);\r
+struct name* tton(const uint8_t* , int);\r
+\r
+\r
+#define MAX_TOK_LEN 64\r
+#define MAX_TOKENS 16\r
+#define MAX_STR_SIZE (MAX_TOK_LEN * MAX_TOKENS)\r
+\r
+int ipow(int base, int exp)\r
+{\r
+ int result = 1;\r
+ while (exp)\r
+ {\r
+ if (exp & 1)\r
+ result = result * base;\r
+ exp = exp >> 1;\r
+ base *= base;\r
+ }\r
+\r
+ return result;\r
+}\r
+\r
+/* Token to Value */\r
+int ttov(const uint8_t* str, int len)\r
+{\r
+ int i, val = 0;\r
+\r
+ for (i = 0; i < len; i++)\r
+ {\r
+ val += ((str[len - (i + 1)] - '0') * ipow(10,i));\r
+ }\r
+\r
+ return val;\r
+}\r
+\r
+uint64_t ttor(const uint8_t* str, int len)\r
+{\r
+ int i;\r
+ uint64_t num = 0;\r
+\r
+ for (i = 0; i < len; i++)\r
+ {\r
+ num += ((str[len - (i + 1)] - '0') * ipow(10,i));\r
+ }\r
+\r
+ return num;\r
+}\r
+\r
+struct name* tton(const uint8_t* str, int len)\r
+{\r
+ int i;\r
+ struct name* namep;\r
+\r
+ namep = (name*) malloc(MAX_NAME_LEN);\r
+ for(i = 0; i < MAX_NAME_LEN - 1; i++)\r
+ namep[i] = str[i];\r
+ namep[i] = '\0';\r
+\r
+ return namep;\r
+}\r