Re: RELAXNG Compact Syntax and character escapes
David Tolpin <[email protected]> Sun, 25 Apr 2004 13:56:12 +0500
| Newsgroups | gmane.text.xml.relaxng.general,gmane.text.xml.devel |
|---|---|
| Message-ID | <[email protected]> |
> sequences of the form \x{n}. Easy enough. But the note in the section (and
> grammar) specifies that there may be more than one "x" character. In the
> grammar this is indefinite-- and this is presumably correct as the
> reversible transformation may be compounded upon itself (some of the
> confusion may stem from the odd text in the note "...the transformation
> replaces adds an extra...").
>
> Obviously however, there are some pathological cases here. I am wondering if
> there are real world limits that others are imposing (e.g. max 2 xx).
Handling multiple x's is trivial, just add a counter. Download rnv
from http://davidashen.net/rnv.html; rnc.c is a compact syntax
parser, including tokenizer.
'struct rnc_source' contains 'int nx', which the counter of x's in
the current escape sequence. If \ followed by x+ is followed by curly
braces, it is folded and unescaped. If it is not, then x's are counted
and returned that many times. Look at rnc.c:getv(struct rnc_source *sp)
David Tolpin