16 #ifndef LLVM_CLANG_LIB_FORMAT_UNWRAPPEDLINEPARSER_H
17 #define LLVM_CLANG_LIB_FORMAT_UNWRAPPEDLINEPARSER_H
22 #include "llvm/Support/Regex.h"
29 struct UnwrappedLineNode;
68 class FormatTokenSource;
82 void parseLevel(
bool HasOpeningBrace);
83 void parseBlock(
bool MustBeDeclaration,
bool AddLevel =
true,
84 bool MunchSemi =
true);
85 void parseChildBlock();
86 void parsePPDirective();
88 void parsePPIf(
bool IfDef);
92 void parsePPUnknown();
93 void readTokenWithJavaScriptASI();
94 void parseStructuralElement();
95 bool tryToParseBracedList();
96 bool parseBracedList(
bool ContinueOnSemicolons =
false,
100 void parseIfThenElse();
101 void parseTryCatch();
102 void parseForOrWhileLoop();
105 void parseCaseLabel();
107 void parseNamespace();
109 void parseAccessSpecifier();
111 void parseJavaEnumBody();
115 void parseRecord(
bool ParseAsExpr =
false);
116 void parseObjCProtocolList();
117 void parseObjCUntilAtEnd();
118 void parseObjCInterfaceOrImplementation();
119 void parseObjCProtocol();
120 void parseJavaScriptEs6ImportExport();
121 bool tryToParseLambda();
122 bool tryToParseLambdaIntroducer();
123 void tryToParseJSFunction();
124 void addUnwrappedLine();
144 void flushComments(
bool NewlineBeforeNext);
146 void calculateBraceTypes(
bool ExpectClassBody =
false);
152 void conditionalCompilationCondition(
bool Unreachable);
153 void conditionalCompilationStart(
bool Unreachable);
154 void conditionalCompilationAlternative();
155 void conditionalCompilationEnd();
162 std::unique_ptr<UnwrappedLine> Line;
170 bool MustBreakBeforeNextToken;
188 std::vector<bool> DeclarationScopeStack;
193 llvm::Regex CommentPragmasRegex;
232 std::stack<int> PPChainBranchIndex;
247 MustBeDeclaration(
false), MatchingOpeningBlockLineIndex(kInvalidIndex) {}
Defines the clang::IdentifierInfo, clang::IdentifierTable, and clang::Selector interfaces.
TokenKind
Provides a simple uniform namespace for tokens from all C languages.