obelisk/src/lexer.h

47 lines
1.0 KiB
C
Raw Normal View History

2022-10-17 22:26:36 -03:00
#ifndef OBELISK_LEXER_H
#define OBELISK_LEXER_H
#include <string>
// TODO: add error handling
2022-10-17 22:26:36 -03:00
namespace obelisk
{
class Lexer
{
private:
std::string identifier_;
double numberValue_;
void setIdentifier(const std::string& identifier);
2022-10-17 22:26:36 -03:00
void eraseIdentifier();
void appendIdentifier(int lastChar);
void setNumberValue(double numberValue);
void commentLine(int* lastChar);
public:
enum Token
{
kTokenEof = -1,
2022-10-17 22:26:36 -03:00
// commands
kTokenFact = -2,
kTokenRule = -3,
kTokenAction = -4,
2022-10-17 22:26:36 -03:00
kTokenDef = -5,
kTokenExtern = -6,
// primary
kTokenIdentifier = -7,
kTokenNumber = -8,
kTokenString = -9
};
int getToken();
const std::string& getIdentifier();
2022-10-17 22:26:36 -03:00
double getNumberValue();
};
} // namespace obelisk
#endif