Website Summary Files Commits Branches @commit @diff @stats
path: root / homework / 81625 / cpp2html / src / Lexer.h
diff options
context:
space:
mode:
Commitaeb0d4f887a0c18c36b59acc7b5df08e62020c50 (patch)
Author
 Dimitar Trendafilov <dimitar@coherent-labs.com>
2020-10-11 21:32:48 +0300
Committer
 Dimitar Trendafilov <dimitar@coherent-labs.com>
2020-10-11 21:33:38 +0300
Filesb6abdc6e1810326b587f2a160f39570f1f568f27 /homework/81625/cpp2html/src/Lexer.h
IPL-aeb0d4f887a0c18c36b59acc7b5df08e62020c50.tar
IPL-aeb0d4f887a0c18c36b59acc7b5df08e62020c50.tar.gz
IPL-aeb0d4f887a0c18c36b59acc7b5df08e62020c50.zip
Parent154b7cd30f21af1554ca26986ff1643e28857727 (diff)
Removed old homeworks
1 files changed, 0 insertions, 223 deletions
-rw-r--r--homework/81625/cpp2html/src/Lexer.h223
diff --git a/homework/81625/cpp2html/src/Lexer.h b/homework/81625/cpp2html/src/Lexer.h
deleted file mode 100644
index 92c2f53..0000000
--- a/homework/81625/cpp2html/src/Lexer.h
+++ /dev/null
@@ -1,223 +0,0 @@
-#ifndef LEXER_H
-#define LEXER_H
-
-#include <vector>
-#include <map>
-#include <string>
-
-enum TokenType
-{
-// Single character tokens
- LEFT_PAREN = 1, // (
- RIGHT_PAREN, // )
- LEFT_BRACKET, // [
- RIGHT_BRACKET, // ]
- LEFT_CUR_BRAC, // {
- RIGHT_CUR_BRAC, // }
- PLUS, // +
- MINUS, // -
- MULTIPLICATION, // *
- DIVIDE, // /
- MODULO, // %
- LESSER, // <
- GREATER, // >
- ASSIGN, // =
- SEMI_COLON, // ;
- QUESTION_MARK, // ?
- EXCLAMATION_MARK, // !
- COLON, // :
- BITWISE_AND, // &
- BITWISE_OR, // |
- BITWISE_XOR, // ^
- BITWISE_NOT, // ~
- DOT, // .
-
-// Double character tokens
- SCOPE, // ::
- PLUS_PLUS, // ++
- MINUS_MINUS, // --
- PTR_ARROW, // ->
- LEFT_BITWISE_SHIFT, // <<
- RIGHT_BITWISE_SHIFT,// >>
- EQUAL, // ==
- NOT_EQUAL, // !=
- LESS_EQUAL, // <=
- GREATER_EQUAL, // >=
- LOGIC_AND, // &&
- LOGIC_OR, // ||
- MOD_EQUAL, // %=
- MULT_EQUAL, // *=
- DIV_EQUAL, // /=
- PLUS_EQUAL, // +=
- MINUS_EQUAL, // -=
- BIT_AND_EQUAL, // &=
- BIT_OR_EQUAL, // |=
- BIT_XOR_EQUAL, // ^=
-
-// Three character tokens
- LEFT_SHIFT_EQUAL, // <<=
- RIGHT_SHIFT_EQUAL, // >>=
-
-// Keyword Tokens
- ALIGNAS,
- ALIGNOF,
- AND,
- AND_EQ,
- ASM,
- AUTO,
- BITAND,
- BITOR,
- BOOL,
- BREAK,
- CASE,
- CATCH,
- CHAR,
- CHAR16_T,
- CHAR32_T,
- CLASS,
- COMPL,
- CONST,
- CONSTEXPR,
- CONST_CAST,
- CONTINUE,
- DECLTYPE,
- DEFAULT,
- DELETE,
- DO,
- DOUBLE,
- DYNAMIC_CAST,
- ELSE,
- ENUM,
- EXPLICIT,
- EXPORT,
- EXTERN,
- FALSE,
- FLOAT,
- FOR,
- FRIEND,
- GOTO,
- IF,
- INLINE,
- INT,
- LONG,
- MUTABLE,
- NAMESPACE,
- NEW,
- NOEXCEPT,
- NOT,
- NOT_EQ,
- NULLPTR,
- OPERATOR,
- OR,
- OR_EQ,
- PRIVATE,
- PROTECTED,
- PUBLIC,
- REGISTER,
- REINTERPRET_CAST,
- RETURN,
- SHORT,
- SIGNED,
- SIZEOF,
- STATIC,
- STATIC_ASSERT,
- STATIC_CAST,
- STRUCT,
- SWITCH,
- TEMPLATE,
- THIS,
- THREAD_LOCAL,
- THROW,
- TRUE,
- TRY,
- TYPEDEF,
- TYPEID,
- TYPENAME,
- UNION,
- UNSIGNED,
- USING,
- VIRTUAL,
- VOID,
- VOLATILE,
- WCHAR_T,
- WHILE,
- XOR,
- XOR_EQ,
-
- // preprocessors
- PRE_DEFINE,
- PRE_UNDEF,
- PRE_INCLUDE,
- PRE_IF,
- PRE_IFDEF,
- PRE_IFNDEF,
- PRE_ELSE,
- PRE_ELIF,
- PRE_ENDIF,
- PRE_LINE,
- PRE_ERROR,
- PRE_PRAGMA,
-
- NUMBER,
- IDENTIFIER,
- STRING,
- COMMENT,
- Eof,
- INVALID
-};
-
-enum State
-{
- FAIL,
- SUCCESS,
- ERROR
-};
-
-struct Token
-{
- TokenType type;
- unsigned line;
- std::string lexeme;
- double value;
-};
-
-class Tokenizer
-{
-private:
- const char* code;
- unsigned line;
- unsigned column;
- unsigned codeIndex;
- State state;
- std::map<std::string, TokenType> keywords;
- std::map<std::string, TokenType> preprocessors;
-
-public:
- Tokenizer(const char* code);
- Token nextToken();
- Token produceToken(TokenType type, std::string lexeme, double val = 0.0);
- Token produceToken(TokenType type);
-
- bool isAtEOF() const;
- bool match(char c) const;
- bool isStateError() const;
- bool isStateSuccess() const;
- bool tokenize(std::vector<Token> &tokens);
-
- double parseNumber();
- std::string parseComment();
- std::string parseString();
- Token parseKeyword();
- Token parsePreprocessor();
- std::string parseIdentifier();
-
- void skipWhiteSpaces();
- void nextSymbol();
- void prevSymbol();
-
-};
-
-//#include "Lexer.cpp"
-
-#endif
-