fix directive parser to deal with arguments containing non-identifier chars