https://rentry.org/PPP2_p210

// Code derived from Stroustrup's PPP2 book
// § 6.8 Token streams
//  -and beginning on p 210

/*------------------------------------------------------------------------------

  Note: One of the goals behind the textbook's teaching for this section is to
  use an incremental approach for the student's understanding of all the various
  problems to be solved when creating a working calculator program.

   -As such, some of the examples from Ch 6 are non-working if left as-is.
   -This example is one of those.
   -The actual definitions of the function declarations:
        Token_stream::Token_stream(), Token_stream::get(),
        Token_stream::putback()
    are being left till later on in the examples (so the build's linker step
    will fail therefore). For now, these are just placeholders for the ideas.

  A working example is already created for the classroom so you can look ahead.

------------------------------------------------------------------------------*/

class Token {
 public:
  Token(char ch) : kind{ch} {}

  Token(char ch, double val) : kind{ch}, value{val} {}

  char   kind  = '0';
  double value = 0.0;
};

//------------------------------------------------------------------------------
class Token_stream {
 public:
  Token_stream();  // make a Token_stream that reads from cin (defn'd elsewhere)

  Token get();             // get a Token (get() is defined elsewhere)
  void  putback(Token t);  // put a Token back (putback() is defined elsewhere)

 private:  // implementation details
           // (not directly accessible to users of Token_stream)
};

//------------------------------------------------------------------------------
int main()
{
  Token_stream ts;  // a Token_stream called ts

  Token t = ts.get();  // get next Token from ts

  // ...

  ts.putback(t);  // put the Token t back into ts
}

build & run:

g++ -std=c++20 -O2 -Wall -pedantic ./ch_06/main_p210.cpp && ./a.out

PrevUpNext

Edit
Pub: 01 Apr 2023 13:08 UTC
Edit: 02 May 2023 21:21 UTC
Views: 644