blob: 1399943ac20cded5a2e0bde6e5914909ed682f6b (
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
|
/* Grammar
* Expression --> Term PrimeExpression
* PrimeExpression --> (+|-)Expression | Null
* Term --> Factor PrimeTerm
* PrimeTerm --> (*|/)Term | Null
* Factor --> -Expression | (Expression) | operand */
#pragma once
#include <string>
#include "tokenizer.hpp"
#include "syntax_tree.hpp"
class Parser {
private:
// Private attributes.
Tokenizer tokenizer = Tokenizer();
Token **tokens;
Token *current_token;
// End of private attributes.
// Private methods.
void parseExpression();
void parsePrimeExpression();
void parseTerm();
void parsePrimeTerm();
void parseFactor();
// End of private methods.
public:
Parser();
const SyntaxTree *parse(const std::string &input);
};
|