119 ast->area.update(
getScanner().getPreviousToken()->getSourceArea());
132 ast->area.offset(
getScanner().getPreviousToken()->getPosition());
Log base class.
Definition Log.hpp:19
TokenPtr accept(const Tokens type, const String &spell)
ExpressionPtr parseBitwiseAndExpression()
bool is(const Tokens type) const
Definition Parser.hpp:193
ExpressionPtr parseBitwiseXOrExpression()
bool mEnableWarnings
Definition Parser.hpp:60
ExpressionPtr parseEqualityExpression()
InitializerList< BinaryOp > BinaryOpList
Definition Parser.hpp:67
Stack< ASTPtr > mPreParsedASTStack
Definition Parser.hpp:55
TernaryExpressionPtr parseTernaryExpression(const ExpressionPtr &condExpression)
void warning(const String &msg, const Token *token)
const String * findNameManglingPrefix(const String &ident) const
virtual TokenPtr acceptIt()
void assertTokenSpell(const String &spell)
NameMangling mNameMangling
Definition Parser.hpp:48
TokenPtr mToken
Definition Parser.hpp:51
Stack< ScannerStackEntry > mScannerStack
Definition Parser.hpp:53
Log * mLog
Definition Parser.hpp:50
void pushParsingState(const ParsingState &state)
virtual ScannerPtr makeScanner()=0
ReportHandler & getReportHandler()
Definition Parser.hpp:173
UInt32 mUnexpectedTokenCounter
Definition Parser.hpp:57
ExpressionPtr parseBitwiseOrExpression()
void errorUnexpected(const Tokens type, const Token *token=nullptr, bool breakWithException=false)
ExpressionPtr parseLtrBinaryExpression(const UniqueFunction< ExpressionPtr() const > &parseSubExpressionFunc, const BinaryOpList &binaryOps)
const UInt32 unexpectedTokenLimit
Definition Parser.hpp:58
NameMangling & getNameMangling()
Definition Parser.hpp:176
void errorInternal(const String &msg, const String &procName)
ReportHandler mReportHandler
Definition Parser.hpp:47
bool is(const Tokens type, const String &spell) const
Definition Parser.hpp:196
void warning(const String &msg, bool prevToken=true)
ExpressionPtr parseSubExpression()
virtual bool popScannerSource()
ExpressionPtr parseLogicAndExpression()
void enableWarnings(bool enable)
void error(const String &msg, bool prevToken=true, bool breakWithException=true)
TokenPtr accept(const Tokens type)
ExpressionPtr parseLogicOrExpression()
Stack< ParsingState > mParsingStateStack
Definition Parser.hpp:54
ExpressionPtr parseValueExpression()
virtual ~Parser()=default
Int32 parseIntLiteral(TokenPtr token=nullptr)
void pushPreParsedAST(const ASTPtr &ast)
Pushes the specified AST node onto the stack of pre-parsed AST nodes.
ExpressionPtr parseGenericExpression()
Int32 parseIntLiteral(const String &valueStr, const Token *token=nullptr)
ExpressionPtr parseAddExpression()
ExpressionPtr parseDivExpression()
const T & updateSourceAreaOffset(const T &ast)
Definition Parser.hpp:131
const T & updateSourceArea(const T &ast, const ASTPtr &firstAreaOriginAST, const ASTPtr &lastAreaOriginAST)
Definition Parser.hpp:124
String getCurrentFilename() const
void ignoreWhiteSpaces(bool includeNewLines=false, bool includeComments=false)
virtual ExpressionPtr parsePrimaryExpression()=0
void incUnexpectedTokenCounter()
virtual void pushScannerSource(const SourceCodePtr &source, const String &filename="")
void pushTokenString(const TokenPtrString &tokenString)
Tokens getTokenType() const
Definition Parser.hpp:190
void warning(const String &msg, const SourceArea &area)
ParsingState getActiveParsingState() const
const T & updateSourceArea(const T &ast, const AST *areaOriginAST=nullptr)
Definition Parser.hpp:115
const TokenPtr & getToken() const
Definition Parser.hpp:187
SPtr< T > make(Args &&... args)
Definition Parser.hpp:182
void errorUnexpected(const String &hint="", const Token *token=nullptr, bool breakWithException=false)
Log * getLog() const
Definition Parser.hpp:170
ExpressionPtr parseShiftExpression()
ExpressionPtr parseMulExpression()
ExpressionPtr parseRelationExpression()
void assertTokenType(const Tokens type)
void error(const String &msg, const SourceArea &area, bool breakWithException=true)
void error(const String &msg, const Token *token, bool breakWithException=true)
Definition ReportHandler.hpp:31
Definition Scanner.hpp:29
Definition SourceArea.hpp:20
Types
Definition Token.hpp:24
SPtr< Expression > ExpressionPtr
Definition Visitor.hpp:26
SPtr< SourceCode > SourceCodePtr
Definition SourceCode.hpp:66
SPtr< TernaryExpression > TernaryExpressionPtr
Definition Visitor.hpp:70
SPtr< AST > ASTPtr
Definition Visitor.hpp:23
SPtr< Token > TokenPtr
Definition Token.hpp:174
SPtr< Scanner > ScannerPtr
Definition Scanner.hpp:147
std::stack< T, Container > Stack
The Stack class is a container adapter that gives the programmer the functionality of a stack - speci...
Definition Stack.hpp:18
std::shared_ptr< T > SPtr
SPtr is a smart pointer that retains shared ownership of an object through a pointer.
Definition SmartPtr.hpp:37
std::initializer_list< T > InitializerList
An object of type InitializerList<T> is a lightweight proxy object that provides access to an array o...
Definition InitializerList.hpp:40
std::int32_t Int32
Definition DataTypes.hpp:21
struct CeresEngine::GLState state
std::uint32_t UInt32
Definition DataTypes.hpp:23
FunctionBase< true, false, fu2::capacity_default, true, false, Signatures... > UniqueFunction
An owning non copyable function wrapper for arbitrary callable types.
Definition Function.hpp:59
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Name mangling descriptor structure for shader input/output variables (also referred to as "varyings")...
Definition ShaderCompiler.hpp:185
bool activeTemplate
Definition Parser.hpp:37
ScannerPtr scanner
Definition Parser.hpp:42
TokenPtr nextToken
Definition Parser.hpp:44
String filename
Definition Parser.hpp:43