#include <stdio.h>
#include <string.h>
int get_token(const char *str, const char **start, const char **end)
{
str
+= strspn(str
, " \t\r\n"); if (!str[0]) return 0;
*start = *end = str;
*end += 1;
else
return 1;
}
int main(void) {
const char *input = "(define (add x y) (+ x y))";
const char *token, *token_end = input;
while(get_token(token_end, &token, &token_end))
{
printf("%.*s\n", (int)(token_end
- token
), token
); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCmludCBnZXRfdG9rZW4oY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICoqc3RhcnQsIGNvbnN0IGNoYXIgKiplbmQpCnsKCXN0ciArPSBzdHJzcG4oc3RyLCAiIFx0XHJcbiIpOwoJaWYgKCFzdHJbMF0pIHJldHVybiAwOwoKCSpzdGFydCA9ICplbmQgPSBzdHI7CgoJaWYgKHN0cmNocigiKCkiLCBzdHJbMF0pKQoJCSplbmQgKz0gMTsKCWVsc2UKCQkqZW5kICs9IHN0cmNzcG4oc3RyLCAiKCkgXHRcclxuIik7CgoJcmV0dXJuIDE7Cn0KCmludCBtYWluKHZvaWQpIHsKCWNvbnN0IGNoYXIgKmlucHV0ID0gIihkZWZpbmUgKGFkZCB4IHkpICgrIHggeSkpIjsKCWNvbnN0IGNoYXIgKnRva2VuLCAqdG9rZW5fZW5kID0gaW5wdXQ7CgkKCXdoaWxlKGdldF90b2tlbih0b2tlbl9lbmQsICZ0b2tlbiwgJnRva2VuX2VuZCkpCgl7CgkJcHJpbnRmKCIlLipzXG4iLCAoaW50KSh0b2tlbl9lbmQgLSB0b2tlbiksIHRva2VuKTsKCX0KCglyZXR1cm4gMDsKfQo=