summaryrefslogtreecommitdiff
path: root/src/include/parser.hpp
blob: 7bc7997ac0d5868d38841de6fb908ca9d3e50edf (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
/* Grammar
 * Expression --> Term PrimeExpression
 * PrimeExpression --> (+|-)Expression | Null
 * Term --> Factor PrimeTerm
 * PrimeTerm --> (*|/)Term | Null
 * Factor --> -Expression | (Expression) | operand */
#pragma once
#include "tokenizer.hpp"
#include "syntax_tree.hpp"


class Parser {
private:
  // Private methods.
  void parseExpression();
  void parsePrimeExpression();
  void parseTerm();
  void parsePrimeTerm();
  void parseFactor();
  // End of private methods.
public:
  Parser();
  const SyntaxTree *parse();
};