225 Lexer(
const Lexer &) =
delete;
226 void operator=(
const Lexer &) =
delete;
230 llvm::BumpPtrAllocator &Allocator;
236 const char *
const BufferStart;
237 const char *
const BufferEnd;
239 const char *BufferPtr;
243 const char *CommentEnd;
252 enum LexerCommentState :
uint8_t {
254 LCS_InsideBCPLComment,
260 LexerCommentState CommentState;
268 LS_VerbatimBlockFirstLine,
272 LS_VerbatimBlockBody,
294 StringRef resolveHTMLNamedCharacterReference(StringRef Name)
const;
297 StringRef resolveHTMLDecimalCharacterReference(StringRef Name)
const;
300 StringRef resolveHTMLHexCharacterReference(StringRef Name)
const;
302 void formTokenWithChars(
Token &
Result,
const char *TokEnd,
305 void formTextToken(
Token &
Result,
const char *TokEnd) {
306 StringRef
Text(BufferPtr, TokEnd - BufferPtr);
312 assert(Loc >= BufferStart && Loc <= BufferEnd &&
313 "Location out of range for this buffer!");
315 const unsigned CharNo = Loc - BufferStart;
316 return FileLoc.getLocWithOffset(CharNo);
320 return Diags.Report(Loc, DiagID);
324 void skipLineStartingDecorations();
327 const char *skipTextToken();
330 void lexCommentText(
Token &T);
332 void setupAndLexVerbatimBlock(
Token &T,
const char *TextBegin,
char Marker,
335 void lexVerbatimBlockFirstLine(
Token &T);
337 void lexVerbatimBlockBody(
Token &T);
339 void setupAndLexVerbatimLine(
Token &T,
const char *TextBegin,
342 void lexVerbatimLineText(
Token &T);
344 void lexHTMLCharacterReference(
Token &T);
346 void setupAndLexHTMLStartTag(
Token &T);
348 void lexHTMLStartTag(
Token &T);
350 void setupAndLexHTMLEndTag(
Token &T);
352 void lexHTMLEndTag(
Token &T);
357 const char *BufferStart,
const char *BufferEnd,
358 bool ParseCommands =
true);