This commit is contained in:
Rafał Grodziński
2025-05-29 22:02:44 +09:00
parent e709102abc
commit d5d21aa422
5 changed files with 77 additions and 4 deletions

14
README.md Normal file
View File

@@ -0,0 +1,14 @@
expression := literal | binary | grouping
literal := INTEGER
grouping := "(" expression ")"
binary := expression operator expression
operator := "+" | "-" | "*" | "/" | "%"
expression
term factor "+" | "-" factor
factor primary "*" | "/" primary
primary INTEGER | "(" expression ")"

View File

@@ -0,0 +1,14 @@
#include "Expression.h"
ExpressionInvalid Expression::Invalid = ExpressionInvalid();
std::string ExpressionInvalid::toString() {
return "Invalid";
}
/*ExpressionInteger::ExpressionInteger(Token token) {
}
std::string ExpressionInteger::toString() {
return "INTEGER";
}*/

View File

@@ -1,8 +1,25 @@
#ifndef EXPRESSION_H
#define EXPRESSION_H
#include "Token.h"
class ExpressionInvalid;
class Expression {
public:
static ExpressionInvalid Invalid;
virtual std::string toString() = 0;
};
class ExpressionInvalid {
};
/*class ExpressionInteger: Expression {
public:
ExpressionInteger(Token token);
std::string toString() override;
};*/
#endif

View File

@@ -1,5 +1,24 @@
#include "Parser.h"
std::vector Parser::getExpressions() {
Parser::Parser(std::vector<Token> tokens) : tokens(tokens) {
}
/*Expression Parser::getExpression() {
return term();
}*/
/*Expression Parser::term() {
}*/
/*Expression Parser::primary() {
}*/
Expression Parser::matchInteger() {
//Token token = tokens.at(currentIndex);
//if (token.getKind() == Token::Kind::INTEGER)
// ExpressionInteger(token);
return Expression::Invalid;
}

View File

@@ -2,13 +2,22 @@
#define PARSER_H
#include <vector>
#include <Token.h>
#include <Expression.h>
#include "Token.h"
#include "Expression.h"
class Parser {
private:
std::vector<Token> tokens;
int currentIndex = 0;
//Expression term();
//Expression primary();
Expression matchInteger();
public:
Parser(std::vector<Token> tokens);
std::vector<Expression> getExpressions();
//Expression getExpression();
};
#endif