while (start < end) {
int bak = start;
ret.Add (ParseSingle (ref start, end));
- SkipSpaces (ref start);
if (bak == start)
throw new Exception ("Parser failed to progress token position: " + source);
}
return ret;
}
- static readonly char [] token_starters = "$@%(),".ToCharArray ();
+ static readonly char [] token_starters = "$@%(),'\"".ToCharArray ();
Expression ParseSingle (ref int start, int end)
{
{
int n = 0;
for (int i = start; i < end; i++) {
- if (i < end + 1 && source [i] == '\\' && source [i + 1] == quote)
+ if (i < end + 1 && source [i] == '\\' && (source [i + 1] == quote || source [i + 1] == '\\'))
n += 2;
else if (source [i] == quote) {
if (n-- == 0)