CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::ShaderCompiler::SLParser Class Referenceabstract

#include <CeresEngine/Material/ShaderCompiler/Frontend/SLParser.hpp>

Inheritance diagram for CeresEngine::ShaderCompiler::SLParser:
CeresEngine::ShaderCompiler::Parser CeresEngine::ShaderCompiler::GLSLParser CeresEngine::ShaderCompiler::HLSLParser

Public Member Functions

 SLParser (Log *log=nullptr)
 
- Public Member Functions inherited from CeresEngine::ShaderCompiler::Parser
virtual ~Parser ()=default
 

Protected Member Functions

void semi ()
 
virtual CodeBlockPtr parseCodeBlock ()=0
 
virtual VarDeclarationStatementPtr parseParameter ()=0
 
virtual StatementPtr parseLocalStatement ()=0
 
virtual StatementPtr parseForLoopInitializer ()=0
 
virtual SwitchCasePtr parseSwitchCase ()=0
 
virtual VarDeclarationPtr parseVarDeclaration (VarDeclarationStatement *declarationStatementRef, const TokenPtr &identifierToken=nullptr)=0
 
ArrayDimensionPtr parseArrayDimension (bool allowDynamicDimension=false)
 
NullStatementPtr parseNullStatement ()
 
CodeBlockStatementPtr parseCodeBlockStatement ()
 
ForLoopStatementPtr parseForLoopStatement ()
 
WhileLoopStatementPtr parseWhileLoopStatement ()
 
DoWhileLoopStatementPtr parseDoWhileLoopStatement ()
 
IfStatementPtr parseIfStatement ()
 
ElseStatementPtr parseElseStatement ()
 
SwitchStatementPtr parseSwitchStatement ()
 
CtrlTransferStatementPtr parseCtrlTransferStatement ()
 
ReturnStatementPtr parseReturnStatement ()
 
ExpressionStatementPtr parseExpressionStatement (const ExpressionPtr &expression=nullptr)
 
ExpressionPtr parseExpression ()
 
ExpressionPtr parseExpressionWithSequenceOpt ()
 
ExpressionPtr parseArrayIndex ()
 
ExpressionPtr parseInitializer ()
 
SequenceExpressionPtr parseSequenceExpression (const ExpressionPtr &firstExpression)
 
ArrayExpressionPtr parseArrayExpression (const ExpressionPtr &expression)
 
InitializerExpressionPtr parseInitializerExpression ()
 
Vector< VarDeclarationPtrparseVarDeclarationList (VarDeclarationStatement *declarationStatementRef, TokenPtr firstidentifierToken=nullptr)
 
Vector< VarDeclarationStatementPtrparseParameterList ()
 
Vector< StatementPtrparseLocalStatementList ()
 
Vector< ExpressionPtrparseExpressionList (const Tokens listTerminatorToken, bool allowLastComma=false)
 
Vector< ArrayDimensionPtrparseArrayDimensionList (bool allowDynamicDimension=false)
 
Vector< ExpressionPtrparseArrayIndexList ()
 
Vector< ExpressionPtrparseArgumentList ()
 
Vector< ExpressionPtrparseInitializerList ()
 
Vector< SwitchCasePtrparseSwitchCaseList ()
 
String parseIdent (TokenPtr identifierToken=nullptr, SourceArea *area=nullptr)
 
TypeDenoterPtr parseTypeDenoterWithArrayOpt (const TypeDenoterPtr &baseTypeDenoter)
 
VoidTypeDenoterPtr parseVoidTypeDenoter ()
 
Variant parseAndEvaluateConstExpression ()
 
Int32 parseAndEvaluateConstExpressionInt ()
 
Int32 parseAndEvaluateVectorDimension ()
 
void parseStatementWithCommentOpt (Vector< StatementPtr > &statements, const UniqueFunction< StatementPtr() const > &parseFunction)
 
- Protected Member Functions inherited from CeresEngine::ShaderCompiler::Parser
 Parser (Log *log)
 
void error (const String &msg, const SourceArea &area, bool breakWithException=true)
 
void error (const String &msg, const Token *token, bool breakWithException=true)
 
void error (const String &msg, bool prevToken=true, bool breakWithException=true)
 
void errorUnexpected (const String &hint="", const Token *token=nullptr, bool breakWithException=false)
 
void errorUnexpected (const Tokens type, const Token *token=nullptr, bool breakWithException=false)
 
void errorInternal (const String &msg, const String &procName)
 
void warning (const String &msg, const SourceArea &area)
 
void warning (const String &msg, const Token *token)
 
void warning (const String &msg, bool prevToken=true)
 
void enableWarnings (bool enable)
 
virtual ScannerPtr makeScanner ()=0
 
virtual void pushScannerSource (const SourceCodePtr &source, const String &filename="")
 
virtual bool popScannerSource ()
 
ParsingState getActiveParsingState () const
 
ScannergetScanner ()
 
String getCurrentFilename () const
 
TokenPtr accept (const Tokens type)
 
TokenPtr accept (const Tokens type, const String &spell)
 
virtual TokenPtr acceptIt ()
 
void pushTokenString (const TokenPtrString &tokenString)
 
void popTokenString ()
 
void ignoreWhiteSpaces (bool includeNewLines=false, bool includeComments=false)
 
void ignoreNewLines ()
 
template<typename T >
const TupdateSourceArea (const T &ast, const AST *areaOriginAST=nullptr)
 
template<typename T >
const TupdateSourceArea (const T &ast, const ASTPtr &firstAreaOriginAST, const ASTPtr &lastAreaOriginAST)
 
template<typename T >
const TupdateSourceAreaOffset (const T &ast)
 
void pushParsingState (const ParsingState &state)
 
void popParsingState ()
 
void pushPreParsedAST (const ASTPtr &ast)
 Pushes the specified AST node onto the stack of pre-parsed AST nodes.
 
ASTPtr popPreParsedAST ()
 
ExpressionPtr parseGenericExpression ()
 
TernaryExpressionPtr parseTernaryExpression (const ExpressionPtr &condExpression)
 
ExpressionPtr parseLogicOrExpression ()
 
ExpressionPtr parseLogicAndExpression ()
 
ExpressionPtr parseBitwiseOrExpression ()
 
ExpressionPtr parseBitwiseXOrExpression ()
 
ExpressionPtr parseBitwiseAndExpression ()
 
ExpressionPtr parseEqualityExpression ()
 
ExpressionPtr parseRelationExpression ()
 
ExpressionPtr parseShiftExpression ()
 
ExpressionPtr parseAddExpression ()
 
ExpressionPtr parseSubExpression ()
 
ExpressionPtr parseMulExpression ()
 
ExpressionPtr parseDivExpression ()
 
ExpressionPtr parseValueExpression ()
 
virtual ExpressionPtr parsePrimaryExpression ()=0
 
Int32 parseIntLiteral (TokenPtr token=nullptr)
 
Int32 parseIntLiteral (const String &valueStr, const Token *token=nullptr)
 
LoggetLog () const
 
ReportHandlergetReportHandler ()
 
NameManglinggetNameMangling ()
 
const StringfindNameManglingPrefix (const String &ident) const
 
template<typename T , typename... Args>
SPtr< Tmake (Args &&... args)
 
const TokenPtrgetToken () const
 
Tokens getTokenType () const
 
bool is (const Tokens type) const
 
bool is (const Tokens type, const String &spell) const
 

Additional Inherited Members

- Protected Types inherited from CeresEngine::ShaderCompiler::Parser
using Tokens = Token::Types
 
using BinaryOpList = InitializerList< BinaryOp >
 

Constructor & Destructor Documentation

◆ SLParser()

CeresEngine::ShaderCompiler::SLParser::SLParser ( Log log = nullptr)

Member Function Documentation

◆ parseAndEvaluateConstExpression()

Variant CeresEngine::ShaderCompiler::SLParser::parseAndEvaluateConstExpression ( )
protected

◆ parseAndEvaluateConstExpressionInt()

Int32 CeresEngine::ShaderCompiler::SLParser::parseAndEvaluateConstExpressionInt ( )
protected

◆ parseAndEvaluateVectorDimension()

Int32 CeresEngine::ShaderCompiler::SLParser::parseAndEvaluateVectorDimension ( )
protected

◆ parseArgumentList()

Vector< ExpressionPtr > CeresEngine::ShaderCompiler::SLParser::parseArgumentList ( )
protected

◆ parseArrayDimension()

ArrayDimensionPtr CeresEngine::ShaderCompiler::SLParser::parseArrayDimension ( bool  allowDynamicDimension = false)
protected

◆ parseArrayDimensionList()

Vector< ArrayDimensionPtr > CeresEngine::ShaderCompiler::SLParser::parseArrayDimensionList ( bool  allowDynamicDimension = false)
protected

◆ parseArrayExpression()

ArrayExpressionPtr CeresEngine::ShaderCompiler::SLParser::parseArrayExpression ( const ExpressionPtr expression)
protected

◆ parseArrayIndex()

ExpressionPtr CeresEngine::ShaderCompiler::SLParser::parseArrayIndex ( )
protected

◆ parseArrayIndexList()

Vector< ExpressionPtr > CeresEngine::ShaderCompiler::SLParser::parseArrayIndexList ( )
protected

◆ parseCodeBlock()

virtual CodeBlockPtr CeresEngine::ShaderCompiler::SLParser::parseCodeBlock ( )
protectedpure virtual

◆ parseCodeBlockStatement()

CodeBlockStatementPtr CeresEngine::ShaderCompiler::SLParser::parseCodeBlockStatement ( )
protected

◆ parseCtrlTransferStatement()

CtrlTransferStatementPtr CeresEngine::ShaderCompiler::SLParser::parseCtrlTransferStatement ( )
protected

◆ parseDoWhileLoopStatement()

DoWhileLoopStatementPtr CeresEngine::ShaderCompiler::SLParser::parseDoWhileLoopStatement ( )
protected

◆ parseElseStatement()

ElseStatementPtr CeresEngine::ShaderCompiler::SLParser::parseElseStatement ( )
protected

◆ parseExpression()

ExpressionPtr CeresEngine::ShaderCompiler::SLParser::parseExpression ( )
protected

◆ parseExpressionList()

Vector< ExpressionPtr > CeresEngine::ShaderCompiler::SLParser::parseExpressionList ( const Tokens  listTerminatorToken,
bool  allowLastComma = false 
)
protected

◆ parseExpressionStatement()

ExpressionStatementPtr CeresEngine::ShaderCompiler::SLParser::parseExpressionStatement ( const ExpressionPtr expression = nullptr)
protected

◆ parseExpressionWithSequenceOpt()

ExpressionPtr CeresEngine::ShaderCompiler::SLParser::parseExpressionWithSequenceOpt ( )
protected

◆ parseForLoopInitializer()

virtual StatementPtr CeresEngine::ShaderCompiler::SLParser::parseForLoopInitializer ( )
protectedpure virtual

◆ parseForLoopStatement()

ForLoopStatementPtr CeresEngine::ShaderCompiler::SLParser::parseForLoopStatement ( )
protected

◆ parseIdent()

String CeresEngine::ShaderCompiler::SLParser::parseIdent ( TokenPtr  identifierToken = nullptr,
SourceArea area = nullptr 
)
protected

◆ parseIfStatement()

IfStatementPtr CeresEngine::ShaderCompiler::SLParser::parseIfStatement ( )
protected

◆ parseInitializer()

ExpressionPtr CeresEngine::ShaderCompiler::SLParser::parseInitializer ( )
protected

◆ parseInitializerExpression()

InitializerExpressionPtr CeresEngine::ShaderCompiler::SLParser::parseInitializerExpression ( )
protected

◆ parseInitializerList()

Vector< ExpressionPtr > CeresEngine::ShaderCompiler::SLParser::parseInitializerList ( )
protected

◆ parseLocalStatement()

virtual StatementPtr CeresEngine::ShaderCompiler::SLParser::parseLocalStatement ( )
protectedpure virtual

◆ parseLocalStatementList()

Vector< StatementPtr > CeresEngine::ShaderCompiler::SLParser::parseLocalStatementList ( )
protected

◆ parseNullStatement()

NullStatementPtr CeresEngine::ShaderCompiler::SLParser::parseNullStatement ( )
protected

◆ parseParameter()

virtual VarDeclarationStatementPtr CeresEngine::ShaderCompiler::SLParser::parseParameter ( )
protectedpure virtual

◆ parseParameterList()

Vector< VarDeclarationStatementPtr > CeresEngine::ShaderCompiler::SLParser::parseParameterList ( )
protected

◆ parseReturnStatement()

ReturnStatementPtr CeresEngine::ShaderCompiler::SLParser::parseReturnStatement ( )
protected

◆ parseSequenceExpression()

SequenceExpressionPtr CeresEngine::ShaderCompiler::SLParser::parseSequenceExpression ( const ExpressionPtr firstExpression)
protected

◆ parseStatementWithCommentOpt()

void CeresEngine::ShaderCompiler::SLParser::parseStatementWithCommentOpt ( Vector< StatementPtr > &  statements,
const UniqueFunction< StatementPtr() const > &  parseFunction 
)
protected

◆ parseSwitchCase()

virtual SwitchCasePtr CeresEngine::ShaderCompiler::SLParser::parseSwitchCase ( )
protectedpure virtual

◆ parseSwitchCaseList()

Vector< SwitchCasePtr > CeresEngine::ShaderCompiler::SLParser::parseSwitchCaseList ( )
protected

◆ parseSwitchStatement()

SwitchStatementPtr CeresEngine::ShaderCompiler::SLParser::parseSwitchStatement ( )
protected

◆ parseTypeDenoterWithArrayOpt()

TypeDenoterPtr CeresEngine::ShaderCompiler::SLParser::parseTypeDenoterWithArrayOpt ( const TypeDenoterPtr baseTypeDenoter)
protected

◆ parseVarDeclaration()

virtual VarDeclarationPtr CeresEngine::ShaderCompiler::SLParser::parseVarDeclaration ( VarDeclarationStatement declarationStatementRef,
const TokenPtr identifierToken = nullptr 
)
protectedpure virtual

◆ parseVarDeclarationList()

Vector< VarDeclarationPtr > CeresEngine::ShaderCompiler::SLParser::parseVarDeclarationList ( VarDeclarationStatement declarationStatementRef,
TokenPtr  firstidentifierToken = nullptr 
)
protected

◆ parseVoidTypeDenoter()

VoidTypeDenoterPtr CeresEngine::ShaderCompiler::SLParser::parseVoidTypeDenoter ( )
protected

◆ parseWhileLoopStatement()

WhileLoopStatementPtr CeresEngine::ShaderCompiler::SLParser::parseWhileLoopStatement ( )
protected

◆ semi()

void CeresEngine::ShaderCompiler::SLParser::semi ( )
protected

The documentation for this class was generated from the following file: