1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef _XFA_FM_PARSE_H 8 #define _XFA_FM_PARSE_H 9 class CXFA_FMParse { 10 public: 11 CXFA_FMParse(); 12 ~CXFA_FMParse(); 13 int32_t Init(const CFX_WideStringC& wsFormcalc, CXFA_FMErrorInfo* pErrorInfo); 14 void NextToken(); 15 void Check(XFA_FM_TOKEN op); 16 void Error(FX_DWORD lineNum, XFA_FM_ERRMSG msg, ...); 17 CFX_PtrArray* ParseTopExpression(); 18 CXFA_FMExpression* ParseFunction(); 19 CXFA_FMExpression* ParseExpression(); 20 CXFA_FMExpression* ParseVarExpression(); 21 CXFA_FMExpression* ParseExpExpression(); 22 CXFA_FMExpression* ParseBlockExpression(); 23 CXFA_FMExpression* ParseIfExpression(); 24 CXFA_FMExpression* ParseWhileExpression(); 25 CXFA_FMExpression* ParseForExpression(); 26 CXFA_FMExpression* ParseForeachExpression(); 27 CXFA_FMExpression* ParseDoExpression(); 28 CXFA_FMSimpleExpression* ParseParenExpression(); 29 CXFA_FMSimpleExpression* ParseSimpleExpression(); 30 CXFA_FMSimpleExpression* ParseSubassignmentInForExpression(); 31 CXFA_FMSimpleExpression* ParseLogicalOrExpression(); 32 CXFA_FMSimpleExpression* ParseLogicalAndExpression(); 33 CXFA_FMSimpleExpression* ParseEqualityExpression(); 34 CXFA_FMSimpleExpression* ParseRelationalExpression(); 35 CXFA_FMSimpleExpression* ParseAddtiveExpression(); 36 CXFA_FMSimpleExpression* ParseMultiplicativeExpression(); 37 CXFA_FMSimpleExpression* ParseUnaryExpression(); 38 CXFA_FMSimpleExpression* ParsePrimaryExpression(); 39 CXFA_FMSimpleExpression* ParsePostExpression(CXFA_FMSimpleExpression* e); 40 CXFA_FMSimpleExpression* ParseIndexExpression(); 41 42 private: 43 const FX_WCHAR* m_pScript; 44 FX_STRSIZE m_uLength; 45 CXFA_FMLexer* m_lexer; 46 CXFA_FMToken* m_pToken; 47 CXFA_FMErrorInfo* m_pErrorInfo; 48 }; 49 #endif 50