Hello,
Let's say I have some Qi rules:
qi::rule mych;
qi::rule myname;
struct reserved_names_t : qi::symbols {
reserved_names_t() {
this->add("CON", "CON")
("PRN", "PRN")
("AUX", "AUX")
("NUL", "NUL")
("COM1", "COM1")
("COM2", "COM2")
("COM3", "COM3")
("COM4", "COM4")
("COM5", "COM5")
("COM6", "COM6")
("COM7", "COM7")
("COM8", "COM8")
("COM9", "COM9")
("LPT1", "LPT1")
("LPT2", "LPT2")
("LPT3", "LPT3")
("LPT4", "LPT4")
("LPT5", "LPT5")
("LPT6", "LPT6")
("LPT7", "LPT7")
("LPT8", "LPT8")
("LPT9", "LPT9")
;
}
} reserved_names;
Assuming I've defined mych accordingly, the simple approach would be:
myname %= +myname;
This gets me the name in the character set. Now, I want to prohibit
the reserved names from matching.
myname %= ~qi::no_case[reserved_names] | +myname;
However, this does not seem to work. I suppose it is one thing ruling
out invalid characters, but what about prohibiting whole strings?
Thanks in advance for any insights...
Michael Powell