Guest User

Untitled

a guest
Jan 16th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. struct Token
  9. {
  10. string data;
  11. };
  12.  
  13. struct TokenReader
  14. {
  15. virtual bool ReadNext(char c) = 0;
  16. protected:
  17. string receiveBuffer;
  18. void Store(char c)
  19. {
  20. receiveBuffer += c;
  21. }
  22. };
  23.  
  24. struct IdentifierTokenReader : public TokenReader
  25. {
  26. virtual bool ReadNext(char c) override
  27. {
  28. bool next = (IsFirstChar() && IsLetter(c)) || (!IsFirstChar() && (IsLetter(c) || IsDigit(c)));
  29. if (next)
  30. Store(c);
  31.  
  32. return next;
  33. }
  34. private:
  35. bool IsLetter(char c) const
  36. {
  37. return c >= 'a' && c <= 'z';
  38. }
  39. bool IsDigit(char c) const
  40. {
  41. return c >= '0' && c <= '9';
  42. }
  43. bool IsFirstChar() const
  44. {
  45. return receiveBuffer.empty();
  46. }
  47. };
  48.  
  49. struct LeftParenthesis : TokenReader
  50. {
  51. virtual bool ReadNext(char c) override
  52. {
  53. return false;
  54. }
  55. };
  56.  
  57. struct TokenNode
  58. {
  59. string Id;
  60. vector<TokenNode> next;
  61. };
  62.  
  63. int main()
  64. {
  65.  
  66. return 0;
  67. }
Add Comment
Please, Sign In to add comment