| 123456789101112131415161718192021222324252627282930313233343536 |
- // Part of the Carbon Language project, under the Apache License v2.0 with LLVM
- // Exceptions. See /LICENSE for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- #include "toolchain/format/format.h"
- #include "toolchain/lex/token_index.h"
- #include "toolchain/lex/tokenized_buffer.h"
- namespace Carbon::Format {
- // TODO: Add support for formatting line ranges (will need flags too).
- auto Format(const Lex::TokenizedBuffer& tokens, llvm::raw_ostream& out)
- -> bool {
- if (tokens.has_errors()) {
- // TODO: Error recovery.
- return false;
- }
- llvm::ListSeparator sep(" ");
- for (auto token : tokens.tokens()) {
- switch (tokens.GetKind(token)) {
- case Lex::TokenKind::FileStart:
- break;
- case Lex::TokenKind::FileEnd:
- out << "\n";
- break;
- default:
- // TODO: More dependent formatting.
- out << sep << tokens.GetTokenText(token);
- break;
- }
- }
- return true;
- }
- } // namespace Carbon::Format
|