← index
cplusplus17.Examples/examples/ScanLex/parser.hpp
Source: cplusplus17.Examples/examples/ScanLex/parser.hpp
#ifndef _PARSER_H__
#define _PARSER_H__


#include "scan_lex.hpp"
#include "parser_exception.hpp"

namespace parse {

    using namespace scan;

    class Parser {
    public:
        explicit Parser(Scanner *scanner);
        bool checkSyntax();
        bool getToken();
        bool match(TOKEN_TYPE type);
        bool match(KEYWORD_TYPES keyword);
        bool match(OP_TYPES op);

    protected:
        Scanner *scan;
        Token token;
        void parseProcedure();
        void parseArglist();
        void parseBody();
        void parseStatement();
        void parseExpr();
        void parseTerm();
        void parsePrim();
        void parseCall();
        void parseIf();
        void parseWhile();
        void parseFor();
        void parseMatch();
        void parseBlock();
        void parseElif();
        void parseArray();
        void parseList();
        void parseLet();

    };
}

#endif