diff options
Diffstat (limited to 'xfa/src/fxfa/src/fm2js/xfa_lexer.h')
-rw-r--r-- | xfa/src/fxfa/src/fm2js/xfa_lexer.h | 176 |
1 files changed, 111 insertions, 65 deletions
diff --git a/xfa/src/fxfa/src/fm2js/xfa_lexer.h b/xfa/src/fxfa/src/fm2js/xfa_lexer.h index a3ab6253a6..8e94380ab8 100644 --- a/xfa/src/fxfa/src/fm2js/xfa_lexer.h +++ b/xfa/src/fxfa/src/fm2js/xfa_lexer.h @@ -7,76 +7,122 @@ #ifndef _XFA_FM_LEXER_H
#define _XFA_FM_LEXER_H
enum XFA_FM_TOKEN {
- TOKand, TOKlparen, TOKrparen, TOKmul, TOKplus, TOKcomma, TOKminus, TOKdot, TOKdiv, TOKlt,
- TOKassign, TOKgt, TOKlbracket, TOKrbracket, TOKor, TOKdotscream, TOKdotstar, TOKdotdot,
- TOKle, TOKne, TOKeq, TOKge,
- TOKdo, TOKkseq, TOKksge, TOKksgt, TOKif, TOKin, TOKksle, TOKkslt, TOKksne, TOKksor, TOKnull,
- TOKbreak, TOKksand, TOKend, TOKeof, TOKfor, TOKnan, TOKksnot, TOKvar, TOKthen, TOKelse, TOKexit,
- TOKdownto, TOKreturn, TOKinfinity, TOKendwhile, TOKforeach, TOKendfunc, TOKelseif, TOKwhile,
- TOKendfor, TOKthrow, TOKstep, TOKupto, TOKcontinue, TOKfunc, TOKendif,
- TOKstar,
- TOKidentifier, TOKunderscore, TOKdollar, TOKexclamation,
- TOKcall,
- TOKstring,
- TOKnumber,
- TOKreserver
+ TOKand,
+ TOKlparen,
+ TOKrparen,
+ TOKmul,
+ TOKplus,
+ TOKcomma,
+ TOKminus,
+ TOKdot,
+ TOKdiv,
+ TOKlt,
+ TOKassign,
+ TOKgt,
+ TOKlbracket,
+ TOKrbracket,
+ TOKor,
+ TOKdotscream,
+ TOKdotstar,
+ TOKdotdot,
+ TOKle,
+ TOKne,
+ TOKeq,
+ TOKge,
+ TOKdo,
+ TOKkseq,
+ TOKksge,
+ TOKksgt,
+ TOKif,
+ TOKin,
+ TOKksle,
+ TOKkslt,
+ TOKksne,
+ TOKksor,
+ TOKnull,
+ TOKbreak,
+ TOKksand,
+ TOKend,
+ TOKeof,
+ TOKfor,
+ TOKnan,
+ TOKksnot,
+ TOKvar,
+ TOKthen,
+ TOKelse,
+ TOKexit,
+ TOKdownto,
+ TOKreturn,
+ TOKinfinity,
+ TOKendwhile,
+ TOKforeach,
+ TOKendfunc,
+ TOKelseif,
+ TOKwhile,
+ TOKendfor,
+ TOKthrow,
+ TOKstep,
+ TOKupto,
+ TOKcontinue,
+ TOKfunc,
+ TOKendif,
+ TOKstar,
+ TOKidentifier,
+ TOKunderscore,
+ TOKdollar,
+ TOKexclamation,
+ TOKcall,
+ TOKstring,
+ TOKnumber,
+ TOKreserver
};
struct XFA_FMKeyword {
- XFA_FM_TOKEN m_type;
- uint32_t m_uHash;
- const FX_WCHAR* m_keword;
+ XFA_FM_TOKEN m_type;
+ uint32_t m_uHash;
+ const FX_WCHAR* m_keword;
};
const FX_WCHAR* XFA_FM_KeywordToString(XFA_FM_TOKEN op);
-class CXFA_FMToken
-{
-public:
- CXFA_FMToken();
- CXFA_FMToken(FX_DWORD uLineNum);
- ~CXFA_FMToken();
- CFX_WideStringC m_wstring;
- XFA_FM_TOKEN m_type;
- FX_DWORD m_uLinenum;
- CXFA_FMToken* m_pNext;
+class CXFA_FMToken {
+ public:
+ CXFA_FMToken();
+ CXFA_FMToken(FX_DWORD uLineNum);
+ ~CXFA_FMToken();
+ CFX_WideStringC m_wstring;
+ XFA_FM_TOKEN m_type;
+ FX_DWORD m_uLinenum;
+ CXFA_FMToken* m_pNext;
};
-class CXFA_FMLexer
-{
-public:
- CXFA_FMLexer(const CFX_WideStringC& wsFormcalc, CXFA_FMErrorInfo *pErrorInfo);
- ~CXFA_FMLexer();
- CXFA_FMToken* NextToken();
- FX_DWORD Number(CXFA_FMToken *t, const FX_WCHAR* p, const FX_WCHAR* &pEnd);
- FX_DWORD String(CXFA_FMToken *t, const FX_WCHAR* p, const FX_WCHAR* &pEnd);
- FX_DWORD Identifiers(CXFA_FMToken *t, const FX_WCHAR* p, const FX_WCHAR* &pEnd);
- void Comment(const FX_WCHAR* p, const FX_WCHAR* &pEnd);
- XFA_FM_TOKEN IsKeyword(const CFX_WideStringC& p);
- void SetCurrentLine(FX_DWORD line)
- {
- m_uCurrentLine = line;
+class CXFA_FMLexer {
+ public:
+ CXFA_FMLexer(const CFX_WideStringC& wsFormcalc, CXFA_FMErrorInfo* pErrorInfo);
+ ~CXFA_FMLexer();
+ CXFA_FMToken* NextToken();
+ FX_DWORD Number(CXFA_FMToken* t, const FX_WCHAR* p, const FX_WCHAR*& pEnd);
+ FX_DWORD String(CXFA_FMToken* t, const FX_WCHAR* p, const FX_WCHAR*& pEnd);
+ FX_DWORD Identifiers(CXFA_FMToken* t,
+ const FX_WCHAR* p,
+ const FX_WCHAR*& pEnd);
+ void Comment(const FX_WCHAR* p, const FX_WCHAR*& pEnd);
+ XFA_FM_TOKEN IsKeyword(const CFX_WideStringC& p);
+ void SetCurrentLine(FX_DWORD line) { m_uCurrentLine = line; }
+ void SetToken(CXFA_FMToken* pToken) {
+ if (m_pToken) {
+ delete m_pToken;
}
- void SetToken(CXFA_FMToken *pToken)
- {
- if (m_pToken) {
- delete m_pToken;
- }
- m_pToken = pToken;
- }
- const FX_WCHAR* SavePos()
- {
- return m_ptr;
- }
- void RestorePos(const FX_WCHAR* pPos)
- {
- m_ptr = pPos;
- }
- void Error(XFA_FM_ERRMSG msg, ...);
- FX_BOOL HasError() const;
-protected:
- CXFA_FMToken* Scan();
- const FX_WCHAR* m_pScript;
- const FX_WCHAR* m_ptr;
- FX_STRSIZE m_uLength;
- FX_DWORD m_uCurrentLine;
- CXFA_FMToken* m_pToken;
- CXFA_FMErrorInfo* m_pErrorInfo;
+ m_pToken = pToken;
+ }
+ const FX_WCHAR* SavePos() { return m_ptr; }
+ void RestorePos(const FX_WCHAR* pPos) { m_ptr = pPos; }
+ void Error(XFA_FM_ERRMSG msg, ...);
+ FX_BOOL HasError() const;
+
+ protected:
+ CXFA_FMToken* Scan();
+ const FX_WCHAR* m_pScript;
+ const FX_WCHAR* m_ptr;
+ FX_STRSIZE m_uLength;
+ FX_DWORD m_uCurrentLine;
+ CXFA_FMToken* m_pToken;
+ CXFA_FMErrorInfo* m_pErrorInfo;
};
#endif
|