Add vlog output to the parser. (#2435)

Might eventually want to change this further, but I'm just adding the quick framework for it.
This commit is contained in:
Jon Ross-Perkins
2022-11-30 17:28:49 -08:00
committed by GitHub
parent f9979e3cb1
commit 16bbdbbdb8
9 changed files with 61 additions and 21 deletions
+6 -1
View File
@@ -82,10 +82,11 @@ class Parser::PrettyStackTraceParseState : public llvm::PrettyStackTraceEntry {
};
Parser::Parser(ParseTree& tree, TokenizedBuffer& tokens,
TokenDiagnosticEmitter& emitter)
TokenDiagnosticEmitter& emitter, llvm::raw_ostream* vlog_stream)
: tree_(&tree),
tokens_(&tokens),
emitter_(&emitter),
vlog_stream_(vlog_stream),
position_(tokens_->tokens().begin()),
end_(tokens_->tokens().end()) {
CARBON_CHECK(position_ != end_) << "Empty TokenizedBuffer";
@@ -432,6 +433,8 @@ auto Parser::Parse() -> void {
// Traces state_stack_. This runs even in opt because it's low overhead.
PrettyStackTraceParseState pretty_stack(this);
CARBON_VLOG() << "*** Parser::Parse Begin ***\n";
PushState(ParserState::DeclarationLoop());
while (!state_stack_.empty()) {
switch (state_stack_.back().state) {
@@ -444,6 +447,8 @@ auto Parser::Parse() -> void {
}
AddLeafNode(ParseNodeKind::FileEnd(), *position_);
CARBON_VLOG() << "*** Parser::Parse End ***\n";
}
auto Parser::HandleBraceExpressionState() -> void {