allow pipe syntax

`|H\x65;llo|` should be read as `Hello`
@KeenS 

One more. s is in this context a constant integer and only used as a size of hex, isn't it? Then you can omit this variable and write like following:

```c
char HEX_BUF[3];
size_t i;

...

case 'x':
  i = 0;
  while ((HEX_BUF[i++] = next(port)) != ';') {
    if (i >= sizeof HEX_BUF)
      read_error(pic, "expected ';'");
  }
  c = (char)strtol(hex, NULL, 16);
  break;
```