Thanks Hartmut. I inserted the code change you suggested and it picks up the 2 but there is no indication of the "missing" list element. I'll do some more reading and see what I can come up with. (I have a number of CSV files created by various spreadsheets and DB programs that I need to read that have "missing" list items and was trying for a more elegant solution in Spirit. I have done this with the tokenizer by keeping the delimiter tokens.) HartmutKaiser@t-online.de wrote:
Larry Knain wrote:
I should have said that this was a first attempt at using Spirit and I was just experimenting with some simple examples.
There are three examples in the code. The adjustment was made to the second example which is for CSV. The string to be parsed was originally:
char const *plist_csv = "\"string\",\"string with an embedded \\\"\"," "12345,0.12345e4"; Changed to:
char const *plist_csv = "\"string\",\"string with an embedded \\\"\"," "12345,0.12345e4,,2"; These are at line 104.
If you look at the parser definition, you'll notice, that this particular list parser is designed to parse escaped C-strings, integers or reals separated by commas. I.e. no empty elements. If you would like to make your list_p to match even empty elements, you'd have to make the list_csv_item optional:
list_csv = list_p( !list_csv_item[append(vec_item)], // ---------^ note this exclamation sign! ',' )[append(vec_list)] ;
The original parser line was:
list_csv_item = confix_p('\"', *c_escape_ch_p, '\"') | longest_d[real_p | int_p] ; Again, I expected the null item to be omitted from my experience with the tokenizer code but I didn't expect the 2 to be omitted. After the initial failure I changed the line to:
list_csv_item = confix_p('\"', *c_escape_ch_p, '\"') | longest_d[real_p | int_p|~anychar_p] ;
It made no difference. Inserting \"\" between the two commas preceding the 2 did make it get the "null" token and the 2.
Adding the ~anything_p to the list_item parser isn't the correct thing. This actually won't match any input at all.
HTH Regards Hartmut
Info: http://www.boost.org Wiki: http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl Unsubscribe: mailto:boost-users-unsubscribe@yahoogroups.com
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/