aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/test/script/token.cxx
blob: efeb17ba8fe44a00a73d0ac46e70c20296d6e6e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// file      : libbuild2/test/script/token.cxx -*- C++ -*-
// license   : MIT; see accompanying LICENSE file

#include <libbuild2/test/script/token.hxx>

using namespace std;

namespace build2
{
  namespace test
  {
    namespace script
    {
      void
      token_printer (ostream& os, const token& t, print_mode m)
      {
        // Only quote non-name tokens for diagnostics.
        //
        const char* q (m == print_mode::diagnostics ? "'" : "");

        switch (t.type)
        {
        case token_type::semi:  os << q << ';' << q; break;

        case token_type::dot:   os << q << '.' << q; break;

        case token_type::plus:  os << q << '+' << q; break;
        case token_type::minus: os << q << '-' << q; break;

        default: build2::script::token_printer (os, t, m);
        }
      }
    }
  }
}