|
hoshi-lang dev
Yet another programming language
|
#include <lexer.hpp>

Classes | |
| struct | Comment |
| struct | lexerState |
| struct | token |
Public Member Functions | |
| void | getCh () |
| lexer (std::wstringstream ss) | |
| void | saveState () |
| void | returnState () |
| void | dropState () |
| token | scan () |
| token | alphaStart () |
| token | operatorStart () |
| token | strStart () |
| token | digitStart () |
| token | minusStart () |
| token | plusStart () |
| token | asteriskStart () |
| token | slashStart () |
| token | percentSignStart () |
| token | equalStart () |
| token | notStart () |
| token | lessStart () |
| token | greaterStart () |
| token | semicolonStart () |
| token | colonStart () |
| token | commaStart () |
| token | dotStart () |
| token | sharpStart () |
| token | leftParenthesesStart () |
| token | rightParenthesesStart () |
| token | leftBracketStart () |
| token | rightBracketStart () |
| token | leftBracesStart () |
| token | rightBracesStart () |
| token | andStart () |
| token | orStart () |
| token | xorStart () |
| token | binaryNotStart () |
Public Attributes | |
| vec< Comment > | comments |
| vec< lexerState > | states |
| token | curToken |
| wchar | curCh |
| int64_t | line |
| int64_t | col |
Private Attributes | |
| std::wstringstream | stream |
|
explicit |
Definition at line 8 of file lexer.cpp.
References lexer::getCh().

| lexer::token alphaStart | ( | ) |
Definition at line 96 of file lexer.cpp.
References lexer::token::boolean, lexer::col, lexer::curCh, lexer::getCh(), lexer::token::identifier, lexer::token::kAlias, lexer::token::kAlwaysInline, lexer::token::kAs, lexer::token::kBreak, lexer::token::kCallable, lexer::token::kCast, lexer::token::kCatch, lexer::token::kConcept, lexer::token::kConstructor, lexer::token::kContinue, lexer::token::kDataField, lexer::token::kDataStruct, lexer::token::kDecltype, lexer::token::kDynCast, lexer::token::kElif, lexer::token::kElse, lexer::token::kEnum, lexer::token::kExport, lexer::token::kFinalizer, lexer::token::kFinally, lexer::token::kFor, lexer::token::kForEach, lexer::token::kFrom, lexer::token::kFunc, lexer::token::kGenerator, lexer::token::kIf, lexer::token::kImpl, lexer::token::kImport, lexer::token::kIn, lexer::token::kInterface, lexer::token::kInterfaceOf, lexer::token::kIntrinsic, lexer::token::kLet, lexer::token::kNew, lexer::token::kNoFFI, lexer::token::kNull, lexer::token::kReturn, lexer::token::kSatisfy, lexer::token::kStatic, lexer::token::kStruct, lexer::token::kThrow, lexer::token::kTry, lexer::token::kTypeId, lexer::token::kUse, lexer::token::kWhile, lexer::token::kYield, lexer::line, lexer::operatorStart(), and lexer::scan().
Referenced by lexer::scan().


| lexer::token andStart | ( | ) |
Definition at line 560 of file lexer.cpp.
References lexer::token::binaryAnd, lexer::col, lexer::curCh, lexer::getCh(), lexer::line, and lexer::token::logicAnd.
Referenced by lexer::scan().


| lexer::token asteriskStart | ( | ) |
Definition at line 370 of file lexer.cpp.
References lexer::token::asterisk, lexer::col, lexer::curCh, lexer::getCh(), lexer::line, and lexer::token::multiplicationAssignment.
Referenced by lexer::scan().


| lexer::token binaryNotStart | ( | ) |
Definition at line 592 of file lexer.cpp.
References lexer::token::binaryNot, lexer::col, lexer::getCh(), and lexer::line.

| lexer::token colonStart | ( | ) |
Definition at line 480 of file lexer.cpp.
References lexer::col, lexer::token::colon, lexer::curCh, lexer::token::directAssignSign, lexer::getCh(), and lexer::line.
Referenced by lexer::scan().


| lexer::token commaStart | ( | ) |
Definition at line 490 of file lexer.cpp.
References lexer::col, lexer::token::comma, lexer::getCh(), and lexer::line.
Referenced by lexer::scan().


| lexer::token digitStart | ( | ) |
Definition at line 233 of file lexer.cpp.
References lexer::col, lexer::curCh, lexer::token::decimal, lexer::getCh(), lexer::token::integer, lexer::line, lexer::token::shortInt, lexer::token::unsignedInt, and yoi::yoi_assert().
Referenced by lexer::scan().


| lexer::token dotStart | ( | ) |
Definition at line 496 of file lexer.cpp.
References lexer::col, lexer::curCh, lexer::token::dot, lexer::getCh(), lexer::token::kThreeDots, lexer::line, and lexer::stream.
Referenced by lexer::scan().


| void dropState | ( | ) |
Definition at line 555 of file lexer.cpp.
References lexer::states.
Referenced by yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), and lexer::returnState().

| lexer::token equalStart | ( | ) |
Definition at line 428 of file lexer.cpp.
References lexer::token::assignSign, lexer::col, lexer::curCh, lexer::token::equal, lexer::getCh(), and lexer::line.
Referenced by lexer::scan().


| void getCh | ( | ) |
Definition at line 12 of file lexer.cpp.
References lexer::col, lexer::curCh, lexer::line, yoi::panic(), and lexer::stream.
Referenced by lexer::alphaStart(), lexer::andStart(), lexer::asteriskStart(), lexer::binaryNotStart(), lexer::colonStart(), lexer::commaStart(), lexer::digitStart(), lexer::dotStart(), lexer::equalStart(), lexer::greaterStart(), lexer::leftBracesStart(), lexer::leftBracketStart(), lexer::leftParenthesesStart(), lexer::lessStart(), lexer::lexer(), lexer::minusStart(), lexer::notStart(), lexer::orStart(), lexer::percentSignStart(), lexer::plusStart(), lexer::rightBracesStart(), lexer::rightBracketStart(), lexer::rightParenthesesStart(), lexer::scan(), lexer::semicolonStart(), lexer::sharpStart(), lexer::slashStart(), lexer::strStart(), and lexer::xorStart().


| lexer::token greaterStart | ( | ) |
Definition at line 461 of file lexer.cpp.
References lexer::token::binaryShiftRight, lexer::col, lexer::curCh, lexer::getCh(), lexer::token::greaterEqual, lexer::token::greaterThan, and lexer::line.
Referenced by lexer::scan().


| lexer::token leftBracesStart | ( | ) |
Definition at line 531 of file lexer.cpp.
References lexer::col, lexer::getCh(), lexer::token::leftBraces, and lexer::line.
Referenced by lexer::scan().


| lexer::token leftBracketStart | ( | ) |
Definition at line 519 of file lexer.cpp.
References lexer::col, lexer::getCh(), lexer::token::leftBracket, and lexer::line.
Referenced by lexer::scan().


| lexer::token leftParenthesesStart | ( | ) |
Definition at line 507 of file lexer.cpp.
References lexer::col, lexer::getCh(), lexer::token::leftParentheses, and lexer::line.
Referenced by lexer::scan().


| lexer::token lessStart | ( | ) |
Definition at line 448 of file lexer.cpp.
References lexer::token::binaryShiftLeft, lexer::col, lexer::curCh, lexer::getCh(), lexer::token::lessEqual, lexer::token::lessThan, and lexer::line.
Referenced by lexer::scan().


| lexer::token minusStart | ( | ) |
Definition at line 341 of file lexer.cpp.
References lexer::col, lexer::curCh, lexer::token::decrementSign, lexer::getCh(), lexer::line, lexer::token::minus, lexer::token::subtractionAssignment, and lexer::token::toSign.
Referenced by lexer::scan().


| lexer::token notStart | ( | ) |
Definition at line 438 of file lexer.cpp.
References lexer::col, lexer::curCh, lexer::getCh(), lexer::line, lexer::token::logicNot, and lexer::token::notEqual.
Referenced by lexer::scan().


| lexer::token operatorStart | ( | ) |
Definition at line 646 of file lexer.cpp.
References lexer::token::additionAssignment, lexer::token::assignSign, lexer::token::asterisk, lexer::token::binaryAnd, lexer::token::binaryNot, lexer::token::binaryOr, lexer::token::binaryShiftLeft, lexer::token::binaryShiftRight, lexer::token::binaryXor, lexer::col, lexer::curToken, lexer::token::decrementSign, lexer::token::directAssignSign, lexer::token::divisionAssignment, lexer::token::equal, lexer::token::greaterThan, lexer::token::identifier, lexer::token::incrementSign, lexer::token::kind, lexer::token::leftBracket, lexer::token::leftParentheses, lexer::token::lessThan, lexer::line, lexer::token::minus, lexer::token::multiplicationAssignment, lexer::token::notEqual, yoi::panic(), lexer::token::percentSign, lexer::token::plus, lexer::token::reminderAssignment, lexer::token::rightBracket, lexer::token::rightParentheses, lexer::scan(), lexer::token::slash, lexer::token::subtractionAssignment, and yoi::yoi_assert().
Referenced by lexer::alphaStart().


| lexer::token orStart | ( | ) |
Definition at line 570 of file lexer.cpp.
References lexer::token::binaryOr, lexer::col, lexer::curCh, lexer::getCh(), lexer::line, and lexer::token::logicOr.
Referenced by lexer::scan().


| lexer::token percentSignStart | ( | ) |
Definition at line 418 of file lexer.cpp.
References lexer::col, lexer::curCh, lexer::getCh(), lexer::line, lexer::token::percentSign, and lexer::token::reminderAssignment.
Referenced by lexer::scan().


| lexer::token plusStart | ( | ) |
Definition at line 357 of file lexer.cpp.
References lexer::token::additionAssignment, lexer::col, lexer::curCh, lexer::getCh(), lexer::token::incrementSign, lexer::line, and lexer::token::plus.
Referenced by lexer::scan().


| void returnState | ( | ) |
Definition at line 547 of file lexer.cpp.
References lexer::lexerState::col, lexer::col, lexer::lexerState::curCh, lexer::curCh, lexer::lexerState::curToken, lexer::curToken, lexer::dropState(), lexer::lexerState::line, lexer::line, lexer::lexerState::pos, lexer::states, and lexer::stream.
Referenced by yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), and yoi::parse().


| lexer::token rightBracesStart | ( | ) |
Definition at line 537 of file lexer.cpp.
References lexer::col, lexer::getCh(), lexer::line, and lexer::token::rightBraces.
Referenced by lexer::scan().


| lexer::token rightBracketStart | ( | ) |
Definition at line 525 of file lexer.cpp.
References lexer::col, lexer::getCh(), lexer::line, and lexer::token::rightBracket.
Referenced by lexer::scan().


| lexer::token rightParenthesesStart | ( | ) |
Definition at line 513 of file lexer.cpp.
References lexer::col, lexer::getCh(), lexer::line, and lexer::token::rightParentheses.
Referenced by lexer::scan().


| void saveState | ( | ) |
Definition at line 543 of file lexer.cpp.
References lexer::col, lexer::curCh, lexer::curToken, lexer::line, lexer::states, and lexer::stream.
Referenced by yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), and yoi::parse().

| lexer::token scan | ( | ) |
Definition at line 29 of file lexer.cpp.
References lexer::alphaStart(), lexer::andStart(), lexer::asteriskStart(), lexer::col, lexer::colonStart(), lexer::commaStart(), lexer::curCh, lexer::curToken, lexer::digitStart(), lexer::dotStart(), lexer::token::eof, lexer::equalStart(), lexer::getCh(), lexer::greaterStart(), lexer::leftBracesStart(), lexer::leftBracketStart(), lexer::leftParenthesesStart(), lexer::lessStart(), lexer::line, lexer::minusStart(), lexer::notStart(), lexer::orStart(), yoi::panic(), lexer::percentSignStart(), lexer::plusStart(), lexer::rightBracesStart(), lexer::rightBracketStart(), lexer::rightParenthesesStart(), lexer::semicolonStart(), lexer::sharpStart(), lexer::slashStart(), lexer::strStart(), and lexer::xorStart().
Referenced by lexer::alphaStart(), visitor::checkMarcoSatisfaction(), compilerContext::compileModule(), compilerContext::initializeSharedObjects(), main(), lexer::operatorStart(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), and lexer::slashStart().


| lexer::token semicolonStart | ( | ) |
Definition at line 474 of file lexer.cpp.
References lexer::col, lexer::getCh(), lexer::line, and lexer::token::semicolon.
Referenced by lexer::scan().


| lexer::token sharpStart | ( | ) |
Definition at line 586 of file lexer.cpp.
References lexer::col, lexer::getCh(), lexer::line, and lexer::token::sharp.
Referenced by lexer::scan().


| lexer::token slashStart | ( | ) |
Definition at line 380 of file lexer.cpp.
References lexer::col, lexer::comments, lexer::curCh, lexer::token::divisionAssignment, lexer::getCh(), lexer::line, lexer::scan(), and lexer::token::slash.
Referenced by lexer::scan().


| lexer::token strStart | ( | ) |
Definition at line 212 of file lexer.cpp.
References lexer::token::character, lexer::col, lexer::curCh, lexer::getCh(), lexer::line, yoi::panic(), yoi::parseString(), and lexer::token::string.
Referenced by lexer::scan().


| lexer::token xorStart | ( | ) |
Definition at line 580 of file lexer.cpp.
References lexer::token::binaryXor, lexer::col, lexer::getCh(), and lexer::line.
Referenced by lexer::scan().


| int64_t col |
Definition at line 175 of file lexer.hpp.
Referenced by lexer::alphaStart(), lexer::andStart(), lexer::asteriskStart(), lexer::binaryNotStart(), lexer::colonStart(), lexer::commaStart(), lexer::digitStart(), lexer::dotStart(), lexer::equalStart(), lexer::getCh(), lexer::greaterStart(), lexer::leftBracesStart(), lexer::leftBracketStart(), lexer::leftParenthesesStart(), lexer::lessStart(), lexer::minusStart(), lexer::notStart(), lexer::operatorStart(), lexer::orStart(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), lexer::percentSignStart(), lexer::plusStart(), lexer::returnState(), lexer::rightBracesStart(), lexer::rightBracketStart(), lexer::rightParenthesesStart(), lexer::saveState(), lexer::scan(), lexer::semicolonStart(), lexer::sharpStart(), lexer::slashStart(), lexer::strStart(), and lexer::xorStart().
Definition at line 23 of file lexer.hpp.
Referenced by lexer::slashStart().
| wchar curCh |
Definition at line 173 of file lexer.hpp.
Referenced by lexer::alphaStart(), lexer::andStart(), lexer::asteriskStart(), lexer::colonStart(), lexer::digitStart(), lexer::dotStart(), lexer::equalStart(), lexer::getCh(), lexer::greaterStart(), lexer::lessStart(), lexer::minusStart(), lexer::notStart(), lexer::orStart(), lexer::percentSignStart(), lexer::plusStart(), lexer::returnState(), lexer::saveState(), lexer::scan(), lexer::slashStart(), and lexer::strStart().
| token curToken |
Definition at line 172 of file lexer.hpp.
Referenced by lexer::operatorStart(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), lexer::returnState(), lexer::saveState(), and lexer::scan().
| int64_t line |
Definition at line 175 of file lexer.hpp.
Referenced by lexer::alphaStart(), lexer::andStart(), lexer::asteriskStart(), lexer::binaryNotStart(), lexer::colonStart(), lexer::commaStart(), lexer::digitStart(), lexer::dotStart(), lexer::equalStart(), lexer::getCh(), lexer::greaterStart(), lexer::leftBracesStart(), lexer::leftBracketStart(), lexer::leftParenthesesStart(), lexer::lessStart(), lexer::minusStart(), lexer::notStart(), lexer::operatorStart(), lexer::orStart(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), yoi::parse(), lexer::percentSignStart(), lexer::plusStart(), lexer::returnState(), lexer::rightBracesStart(), lexer::rightBracketStart(), lexer::rightParenthesesStart(), lexer::saveState(), lexer::scan(), lexer::semicolonStart(), lexer::sharpStart(), lexer::slashStart(), lexer::strStart(), and lexer::xorStart().
| vec<lexerState> states |
Definition at line 170 of file lexer.hpp.
Referenced by lexer::dropState(), lexer::returnState(), and lexer::saveState().
|
private |
Definition at line 15 of file lexer.hpp.
Referenced by lexer::dotStart(), lexer::getCh(), lexer::returnState(), and lexer::saveState().