Parser.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #ifndef _PARSER_H
  2. #define _PARSER_H
  3. // Standard includes
  4. #include <map>
  5. // Local includes
  6. #include "Ast.h"
  7. namespace parser {
  8. static int CurTok;
  9. static std::map<char, int> BinopPrecedence;
  10. int getNextToken();
  11. static int GetTokPrecedence();
  12. std::unique_ptr<ExprAST> Error(const char *Str);
  13. std::unique_ptr<PrototypeAST> ErrorP(const char *Str);
  14. static std::unique_ptr<ExprAST> ParseExpression();
  15. static std::unique_ptr<ExprAST> ParseNumberExpr();
  16. static std::unique_ptr<ExprAST> ParseParenExpr();
  17. static std::unique_ptr<ExprAST> ParseIdentifierExpr();
  18. static std::unique_ptr<ExprAST> ParseIfExpr();
  19. static std::unique_ptr<ExprAST> ParseForExpr();
  20. static std::unique_ptr<ExprAST> ParsePrimary();
  21. static std::unique_ptr<ExprAST> ParseUnary();
  22. static std::unique_ptr<ExprAST> ParseBinOpRHS(int ExprPrec,
  23. std::unique_ptr<ExprAST> LHS);
  24. static std::unique_ptr<PrototypeAST> ParsePrototype();
  25. static std::unique_ptr<FunctionAST> ParseDefinition();
  26. static std::unique_ptr<FunctionAST> ParseTopLevelExpr();
  27. static std::unique_ptr<PrototypeAST> ParseExtern();
  28. static void HandleDefinition();
  29. static void HandleExtern();
  30. static void HandleTopLevelExpression();
  31. void MainLoop();
  32. }
  33. #endif