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