Opened 14 years ago
Closed 14 years ago
#2860 closed Bugs (fixed)
misdetected unexpected character
Reported by: | Owned by: | Daniel James | |
---|---|---|---|
Milestone: | Boost 1.39.0 | Component: | quickbook |
Version: | Boost Development Trunk | Severity: | Problem |
Keywords: | Cc: |
Description
Quickbook incorrectly reports an unexpected character when processing the following
[python]
print "\xfapln\xeck"
warning: in column:9, unexpected character: " warning: in column:22, unexpected character: "
Change History (5)
comment:1 by , 14 years ago
comment:2 by , 14 years ago
Component: | quickbook → spirit |
---|---|
Owner: | changed from | to
Status: | new → assigned |
I think this is a bug in spirit's c_escape_ch_p
. I'll look into it.
comment:3 by , 14 years ago
Component: | spirit → quickbook |
---|
Sorry, my mistake. It's a bug in quickbook, it's using a C character escape parser for python and the syntax is different. Although I think it should be fairly liberal about how it parses either language, so I think I might change both to accept a string like that.
comment:4 by , 14 years ago
(In [51949]) Use our own escape character parser.
We're currently using the spirit escaped character parser. This is a strict C parser and causes parse errors for code that we probably should accept, such as any hexadecimal encoded characters with a value greater than the maximum value of the current platform's 'char'. This is \x7F on some platforms so it rejects '\x80' upwards. As well as rejecting characters that might be valid, it also means that quickbook will act differently on different platforms.
In python strings, '\xaaa' is equivalent to '\xaa' + 'a', but the spirit parser interprets this as a character with value '0xaaa'. So we probably should accept these.
I also think we should be liberal about what we accept. IMO it isn't our job to enforce correct C++/python, just to create a reasonable rendering of our input. So rather than write a parser which understands the various types of escapes, I just wrote one that ignores any character following a backslash.
Refs #2860.
comment:5 by , 14 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
(In [52064]) Fix bug handling python and C++ strings.
Fixes #2860.
Merged revisions 51949 via svnmerge from https://svn.boost.org/svn/boost/trunk
........
r51949 | danieljames | 2009-03-24 08:34:09 +0000 (Tue, 24 Mar 2009) | 21 lines
Use our own escape character parser.
We're currently using the spirit escaped character parser. This is a strict C parser and causes parse errors for code that we probably should accept, such as any hexadecimal encoded characters with a value greater than the maximum value of the current platform's 'char'. This is \x7F on some platforms so it rejects '\x80' upwards. As well as rejecting characters that might be valid, it also means that quickbook will act differently on different platforms.
In python strings, '\xaaa' is equivalent to '\xaa' + 'a', but the spirit parser interprets this as a character with value '0xaaa'. So we probably should accept these.
I also think we should be liberal about what we accept. IMO it isn't our job to enforce correct C++/python, just to create a reasonable rendering of our input. So rather than write a parser which understands the various types of escapes, I just wrote one that ignores any character following a backslash.
Refs #2860.
........
fixed formatting: