From: Steve Tuckner Date: 2001-06-05T01:14:48+09:00 Subject: [ruby-talk:16208] Parsing Question I am trying to write a command line parser that would take a string as input and build a list of arguments based on the following simple syntax: An argument is either: [A-Za-z0-9]+ or "(anything but a ") with \" ignored followed by a closing " So what is the best way in Ruby to do this? def parseCommandLine(aString) --> array of strings I know how I would do this in C (have done it many times) GetToken() { // eat leading spaces while (isspace(c = getchar())) ; while (c != EOF) { if (alnum(c)) { while (isalnum(c)) *pToken++ = c; } else if (c == DOUBLE_QUOTE) { done = false gotback = false while (!done) { c = getchar(); if (c == EOF) error("no ending double quote\n"); if (gotback) { if (c == BACKSLASH || c == DOUBLE_QUOTE) { *pToken++ = c } gotback = false } else { if (c == BACKSLASH) { gotback = true } else if (c == DOUBLE_QUOTE) { break; } else ( *pToken++ = c } } } } c = getchar(); } }