LCOV - code coverage report
Current view: top level - src/lexicalAnalysis - nicoleSintax.cc (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 97 97
Test Date: 2025-04-18 15:53:49 Functions: 100.0 % 1 1

            Line data    Source code
       1              : #include "../../inc/lexicalAnalysis/nicoleSintax.h"
       2              : 
       3              : namespace nicole {
       4              : 
       5           18 : const Lexer NicoleSintax::createLexer() const noexcept {
       6           18 :   return Lexer{
       7           18 :       std::vector<Category>{
       8           18 :           Category{TokenType::SPACE, "\\s+", true},
       9           18 :           Category{TokenType::COMMENT, "\\/\\*(.|\\n)*?\\*\\/", true},
      10              : 
      11           18 :           Category{TokenType::NUMBER_FLOAT, "f\\d+\\.\\d+([eE][-]?\\d+)?",
      12           18 :                    false},
      13           18 :           Category{TokenType::NUMBER_DOUBLE, "\\d+\\.\\d+([eE][-]?\\d+)?",
      14           18 :                    false},
      15           18 :           Category{TokenType::NUMBER_INT, "\\d+([eE][-]?\\d+)?", false},
      16           18 :           Category{TokenType::CHAR, "\'(?:\\\\.|[^\'\\\\])\'", false},
      17           18 :           Category{TokenType::STRING, "\"(?:\\\\.|[^\"\\\\])*\"", false},
      18           18 :           Category{TokenType::TRUE, "true", false},
      19           18 :           Category{TokenType::FALSE, "false", false},
      20           18 :           Category{TokenType::NULLPTR, "null", false},
      21              : 
      22           18 :           Category{TokenType::TYPE_VOID, "void", false},
      23           18 :           Category{TokenType::TYPE_BOOL, "bool", false},
      24           18 :           Category{TokenType::TYPE_CHAR, "char", false},
      25           18 :           Category{TokenType::TYPE_DOUBLE, "double", false},
      26           18 :           Category{TokenType::TYPE_FLOAT, "float", false},
      27           18 :           Category{TokenType::TYPE_INT, "int", false},
      28              : 
      29              :           // constructor here to avoid conflict eith const
      30           18 :           Category{TokenType::CONSTRUCTOR, "constructor", false},
      31           18 :           Category{TokenType::DESTRUCTOR, "destructor", false},
      32              : 
      33           18 :           Category{TokenType::CONST, "const", false},
      34           18 :           Category{TokenType::LET, "let", false},
      35           18 :           Category{TokenType::AUTO, "auto", false},
      36           18 :           Category{TokenType::PTR, "ptr", false},
      37           18 :           Category{TokenType::VECTOR, "vector", false},
      38              : 
      39           18 :           Category{TokenType::NEW, "new", false},
      40           18 :           Category{TokenType::DELETE, "delete", false},
      41              : 
      42           18 :           Category{TokenType::IMPORT, "import", false},
      43           18 :           Category{TokenType::PRINT, "print", false},
      44           18 :           Category{TokenType::SYSTEM, "system", false},
      45           18 :           Category{TokenType::TYPE, "type", false},
      46              : 
      47           18 :           Category{TokenType::SWITCH, "switch", false},
      48           18 :           Category{TokenType::CASE, "case", false},
      49           18 :           Category{TokenType::DEFAULT, "default", false},
      50              : 
      51           18 :           Category{TokenType::IF, "if", false},
      52           18 :           Category{TokenType::ELSE, "else", false},
      53              : 
      54           18 :           Category{TokenType::WHILE, "while", false},
      55           18 :           Category{TokenType::FOR, "for", false},
      56           18 :           Category{TokenType::STOP, "stop", false},
      57           18 :           Category{TokenType::PASS, "pass", false},
      58              : 
      59           18 :           Category{TokenType::RETURN, "return", false},
      60           18 :           Category{TokenType::FUNCTION, "def", false},
      61              : 
      62           18 :           Category{TokenType::ENUM, "enum", false},
      63           18 :           Category{TokenType::STRUCT, "struct", false},
      64           18 :           Category{TokenType::CLASS, "class", false},
      65           18 :           Category{TokenType::PRIVATE, "private", false},
      66           18 :           Category{TokenType::PUBLIC, "public", false},
      67           18 :           Category{TokenType::PROTECTED, "protected", false},
      68           18 :           Category{TokenType::EXTENDS, "extends", false},
      69           18 :           Category{TokenType::METHOD, "method", false},
      70           18 :           Category{TokenType::ATTR, "attr", false},
      71           18 :           Category{TokenType::THIS, "this", false},
      72           18 :           Category{TokenType::OVERRIDE, "override", false},
      73           18 :           Category{TokenType::VIRTUAL, "virtual", false},
      74              : 
      75              :           // str here so it does not conflict with struct
      76           18 :           Category{TokenType::TYPE_STR, "str", false},
      77              : 
      78           18 :           Category{TokenType::SUPER, "super", false},
      79              : 
      80           18 :           Category{TokenType::OR, "or", false},
      81           18 :           Category{TokenType::AND, "and", false},
      82              : 
      83              :           // avoids the conflic between do and double
      84           18 :           Category{TokenType::ID, "(?!\\b(do)\\b)[a-zA-Z]+[a-zA-Z0-9_]*",
      85           18 :                    false},
      86              : 
      87           18 :           Category{TokenType::DO, "do", false},
      88              : 
      89           18 :           Category{TokenType::RP, "\\)", false},
      90           18 :           Category{TokenType::LP, "\\(", false},
      91           18 :           Category{TokenType::RB, "\\}", false},
      92           18 :           Category{TokenType::LB, "\\{", false},
      93           18 :           Category{TokenType::RC, "\\]", false},
      94           18 :           Category{TokenType::LC, "\\[", false},
      95           18 :           Category{TokenType::SEMICOLON, ";", false},
      96           18 :           Category{TokenType::COMMA, ",", false},
      97           18 :           Category{TokenType::TERNARY, "\\?", false},
      98              : 
      99           18 :           Category{TokenType::DOTDOT_ASSIGNMENT, ":=", false},
     100              : 
     101           18 :           Category{TokenType::DOTDOT, ":", false},
     102           18 :           Category{TokenType::DOT, "\\.", false},
     103              : 
     104           18 :           Category{TokenType::SELF_ADD, "\\+=", false},
     105           18 :           Category{TokenType::SELF_SUB, "\\-=", false},
     106           18 :           Category{TokenType::SELF_MULT, "\\*=", false},
     107           18 :           Category{TokenType::SELF_DIV, "\\/=", false},
     108              : 
     109           18 :           Category{TokenType::SMALLEREQUAL, "<=", false},
     110           18 :           Category{TokenType::BIGGEREQUAL, ">=", false},
     111           18 :           Category{TokenType::NOTEQUAL, "!=", false},
     112           18 :           Category{TokenType::EQUAL, "==", false},
     113              : 
     114           18 :           Category{TokenType::ASSIGNMENT, "=", false},
     115              : 
     116           18 :           Category{TokenType::INCREMENT, "\\+\\+", false},
     117           18 :           Category{TokenType::DECREMENT, "\\-\\-", false},
     118           18 :           Category{TokenType::OPERATOR_ADD, "[+]", false},
     119           18 :           Category{TokenType::OPERATOR_SUB, "[-]", false},
     120           18 :           Category{TokenType::OPERATOR_MULT, "[\\*]", false},
     121           18 :           Category{TokenType::OPERATOR_DIV, "[/]", false},
     122           18 :           Category{TokenType::OPERATOR_SMALLER, "[<]", false},
     123           18 :           Category{TokenType::OPERATOR_GREATER, "[>]", false},
     124           18 :           Category{TokenType::OPERATOR_NOT, "[!]", false},
     125           18 :           Category{TokenType::OPERATOR_MODULE, "[%]", false}},
     126           18 :       extension()};
     127           18 : };
     128              : 
     129              : } // namespace nicole
        

Generated by: LCOV version 2.0-1