| {␊ | 
| $pos = 0;␊ | 
| $stanzas = array();␊ | 
| $length = strlen($in);␊ | 
| ␊ | 
| while ($pos < strlen($in)) {␊ | 
| while ($pos < $length) {␊ | 
| $stanza = array();␊ | 
| while ($pos < strlen($in)) {␊ | 
| while ($pos < $length) {␊ | 
| if ($in[$pos] == "\n") break;␊ | 
| ␊ | 
| $stanzaLine = array('key' => '', 'values' => array(), 'hash' => null);␊ | 
| while ($pos < strlen($in)) {␊ | 
| while ($pos < $length) {␊ | 
| $ch = $in[$pos];␊ | 
| if ($ch == '"' || $ch == '[') break;␊ | 
| ++$pos;␊ | 
|  | 
| $stanzaLine['key'] .= $ch;␊ | 
| }␊ | 
| ␊ | 
| // symbol w/o a value list␊ | 
| if ($pos >= $length || $in[$pos] == "\n") break;␊ | 
| ␊ | 
| if ($in[$pos] == '[') {␊ | 
| unset($stanzaLine['values']);␊ | 
| ++$pos; // opening square bracket␊ | 
|  | 
| while ($in[$pos] == '"') {␊ | 
| ++$pos; // opening quote␊ | 
| $stanzaLine['values'][$valCount] = '';␊ | 
| while ($pos < strlen($in)) {␊ | 
| while ($pos < $length) {␊ | 
| $ch = $in[$pos]; $pr = $in[$pos-1];␊ | 
| if ($ch == '"' && $pr != '\\') break;␊ | 
| ++$pos;␊ | 
|  | 
| }␊ | 
| ++$pos; // closing quote␊ | 
| ␊ | 
| if ($pos >= strlen($in))␊ | 
| if ($pos >= $length)␊ | 
| break;␊ | 
| ␊ | 
| if ($in[$pos] == ' ') {␊ |