"で始まる不正な文字列(らしき)トークンを検出するマクロです。CSS仕様でbadstring1マクロは次のように定義されています。
\"([^\n\r\f\\"]|\\{nl}|{escape})*\\?
"の後の、
([^\n\r\f\\"]|\\{nl}|{escape})*
の部分は通常の文字列を検出する部分です(strring1マクロやstring2マクロと同じ)が、この後の
\\?
の部分で文字列として許されないエスケープ文字を検出します。
文字列として許されるエスケープシーケンス
改行('\n') | nlマクロで検出 |
キャリッジリターン('\r')+改行('\n') | |
キャリッジリターン('\r')+改行('\n') | |
キャリッジリターン('\r') | |
改頁('\f') | |
('\\'+'^') | escapeマクロで検出 |
('\\'+'\n') | |
('\\'+'\r') | |
('\\'+'\f') | |
('\\'+数字) | |
('\\'+アルファベット(小文字)) | |
unicode | unicodeマクロで検出 |