// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef XFA_FXFA_FM2JS_XFA_FMPARSE_H_ #define XFA_FXFA_FM2JS_XFA_FMPARSE_H_ #include #include #include "xfa/fxfa/fm2js/xfa_expression.h" #include "xfa/fxfa/fm2js/xfa_lexer.h" class CXFA_FMParse { public: CXFA_FMParse(const CFX_WideStringC& wsFormcalc, CXFA_FMErrorInfo* pErrorInfo); ~CXFA_FMParse(); void NextToken(); void Check(XFA_FM_TOKEN op); void Error(uint32_t lineNum, const wchar_t* msg, ...); std::vector> ParseTopExpression(); std::unique_ptr ParseFunction(); std::unique_ptr ParseExpression(); std::unique_ptr ParseVarExpression(); std::unique_ptr ParseExpExpression(); std::unique_ptr ParseBlockExpression(); std::unique_ptr ParseIfExpression(); std::unique_ptr ParseWhileExpression(); std::unique_ptr ParseForExpression(); std::unique_ptr ParseForeachExpression(); std::unique_ptr ParseDoExpression(); std::unique_ptr ParseParenExpression(); std::unique_ptr ParseSimpleExpression(); std::unique_ptr ParseSubassignmentInForExpression(); std::unique_ptr ParseLogicalOrExpression(); std::unique_ptr ParseLogicalAndExpression(); std::unique_ptr ParseEqualityExpression(); std::unique_ptr ParseRelationalExpression(); std::unique_ptr ParseAddtiveExpression(); std::unique_ptr ParseMultiplicativeExpression(); std::unique_ptr ParseUnaryExpression(); std::unique_ptr ParsePrimaryExpression(); std::unique_ptr ParsePostExpression( std::unique_ptr e); std::unique_ptr ParseIndexExpression(); private: std::unique_ptr m_lexer; CXFA_FMToken* m_pToken; CXFA_FMErrorInfo* const m_pErrorInfo; }; #endif // XFA_FXFA_FM2JS_XFA_FMPARSE_H_