11#ifndef WSFSCRIPTPARSE_HPP
12#define WSFSCRIPTPARSE_HPP
19#include "UtTextDocument.hpp"
92 void SetRange(UtTextDocumentRange aRange);
133 containerPtr = containerPtr->
mParent;
147 std::map<UsSymbolTable*, WsfScriptContainer*>::const_iterator iter =
mScopeToContainer.find(aTablePtr);
154 std::map<UsSymbolTable*, WsfScriptInfo*>::const_iterator iter =
mScopeToScript.find(aTablePtr);
165 typedef std::map<WsfParseTypePath, WsfScriptContainer, WsfParseTypePathCompare>
ChildContainerMap;
179 typedef std::map<UtTextDocumentLocation, WsfScriptInfo*>
LocationMap;
191 const std::string& aMethodName);
195 const std::string& aMethodName,
196 std::string& aPageName,
197 std::string& aClassName);
234 void InitType(
const std::string& aName,
235 std::map<std::string, std::vector<const WsfGrammar::M::Expr*>>& aTypeExpressions);
237 std::map<std::string, std::vector<const WsfGrammar::M::Expr*>>& aTypeExpressions);
272 const char* aTextPtr,
293 void DeferredProcessScript(
const std::vector<TypeEntry>& aTypeStack,
299 struct RecordedScript
305 std::map<size_t, std::vector<RecordedScript>> mRecordedScripts;
312 virtual void AcceptErrors(std::vector<WsfScriptParser::ErrorRecord>& aErrors) {}
344 tok.
range.SetRange(startPos, startPos + t->
len);
@ cMDB_WsfScriptData
Definition ViMemoryDebugMarkers.hpp:17
@ cMDB_ViWsfScriptContainer
Definition ViMemoryDebugMarkers.hpp:18
@ cMDB_WsfScriptTypes
Definition ViMemoryDebugMarkers.hpp:16
std::vector< UtStringRef > WsfParseTypePath
Definition WsfParseTypePath.hpp:21
Definition UsSymbolTable.hpp:339
Definition UsSymbolTable.hpp:281
Definition UsSymbolTable.hpp:202
Definition wizard/lib/source/Us/Scanner.h:114
int len
Definition wizard/lib/source/Us/Scanner.h:126
int pos
Definition wizard/lib/source/Us/Scanner.h:120
SpecialTokenType
Definition UsCtx.hpp:147
Definition WsfParseGrammar.hpp:202
Definition WsfParseDefinitions.hpp:39
Definition WsfParseIndex.hpp:40
Definition WsfParseNode.hpp:61
Definition WsfParseType.hpp:40
Definition GrammarDocumentation.hpp:28
Definition WsfScriptData.hpp:112
UsConstCtx * mConstCtx
Definition WsfScriptData.hpp:162
std::map< WsfParseTypePath, WsfScriptContainer, WsfParseTypePathCompare > ChildContainerMap
Definition WsfScriptData.hpp:165
WsfScriptData * mScriptDataPtr
Definition WsfScriptData.hpp:160
void AddScript(WsfScriptInfo *aScriptPtr)
Definition WsfScriptData.hpp:122
~WsfScriptContainer()
Definition WsfScriptData.cpp:1140
WsfScriptContainer * GetRoot()
Definition WsfScriptData.hpp:128
bool HasContext() const
Definition WsfScriptData.hpp:116
WsfScriptContainer * FindNearestAncestor(const WsfParseTypePath &aTypeKey, WsfParseType &aSymbolTable)
Definition WsfScriptData.cpp:1036
UT_MEMORY_DEBUG_MARKER(cMDB_ViWsfScriptContainer)
UsSymbolTable * GetScope() const
Definition WsfScriptData.hpp:138
std::map< UsSymbolTable *, WsfScriptContainer * > mScopeToContainer
Definition WsfScriptData.hpp:169
UsCtx * mContextPtr
Definition WsfScriptData.hpp:171
void CreateContext(WsfScriptContainer *aParentContainer, WsfScriptContainer *aCopyFromContainer, const WsfParseTypePath &aLoadKey)
Definition WsfScriptData.cpp:956
WsfScriptInfo * GetScriptByScope(UsSymbolTable *aTablePtr) const
Definition WsfScriptData.hpp:152
WsfScriptContainer * SearchContainer(const WsfParseTypePath &aKey)
Definition WsfScriptData.cpp:1016
ChildContainerMap mChildContainers
Definition WsfScriptData.hpp:166
WsfScriptContainer()
Definition WsfScriptData.cpp:1132
const std::vector< WsfScriptInfo * > & GetScripts() const
Definition WsfScriptData.hpp:127
std::map< UsSymbolTable *, WsfScriptInfo * > mScopeToScript
Definition WsfScriptData.hpp:168
WsfScriptContainer * FindChildContainer(const WsfParseTypePath &aKey)
Definition WsfScriptData.cpp:1006
WsfScriptContainer * GetContainerByScope(UsSymbolTable *aTablePtr) const
Definition WsfScriptData.hpp:145
std::vector< WsfScriptInfo * > mScripts
Definition WsfScriptData.hpp:167
UsCtx * GetContext()
Definition WsfScriptData.cpp:951
WsfScriptContainer * mParent
Definition WsfScriptData.hpp:161
WsfParseTypePath mContainerTypePath
Definition WsfScriptData.hpp:170
WsfScriptContainer * GetChildContainer(const WsfParseTypePath &aSaveKey, const WsfParseTypePath &aLoadKey, WsfParseType &aSymbolTable)
Definition WsfScriptData.cpp:1063
Definition WsfScriptData.hpp:177
WsfParseDefinitions * mParseDefinitions
Definition WsfScriptData.hpp:208
bool FindScriptMethodDocumentation(GrammarDocumentation &aDocumentationData, UsType *aClassPtr, const std::string &aMethodName, std::string &aPageName, std::string &aClassName)
Definition WsfScriptData.cpp:1400
QString PeekScriptDocumentation(GrammarDocumentation &aDocumentationData, UsType *aClassPtr, const std::string &aMethodName)
Definition WsfScriptData.cpp:1386
LocationMap mLocationToScript
Definition WsfScriptData.hpp:206
const LocationMap & GetLocationMap() const
Definition WsfScriptData.hpp:180
WsfScriptContainer mRoot
Definition WsfScriptData.hpp:204
WsfParseType * FindParseType(const WsfParseTypePath &aLoadKey)
Definition WsfScriptData.cpp:1462
WsfScriptInfo * FindScriptFromScope(UsSymbolTable *aTablePtr)
Definition WsfScriptData.cpp:1223
UtTextDocumentRange FindSymbolDefinition(UsSymbol *aSymbolPtr)
Definition WsfScriptData.cpp:1163
UT_MEMORY_DEBUG_MARKER(cMDB_WsfScriptData)
WsfScriptData(WsfScriptTypes *aTypesPtr, WsfParseIndex *aParseIndex, WsfParseDefinitions *aDefinitions)
Definition WsfScriptData.cpp:1149
~WsfScriptData()
Definition WsfScriptData.cpp:1379
bool FindScriptTypeDocumentation(GrammarDocumentation &aDocumentationData, UsType *aClassPtr, std::string &aPageName)
Definition WsfScriptData.cpp:1446
WsfScriptContainer * FindContainerFromScope(UsSymbolTable *aTablePtr)
Definition WsfScriptData.cpp:1251
WsfScriptTypes * mTypesPtr
Definition WsfScriptData.hpp:203
WsfParseIndex * mParseIndex
Definition WsfScriptData.hpp:207
std::map< UtTextDocumentLocation, WsfScriptInfo * > LocationMap
Definition WsfScriptData.hpp:179
std::map< UsSymbol *, int > mVarDeclLocations
Definition WsfScriptData.hpp:385
int mCursorPos
Definition WsfScriptData.hpp:394
void AtDot(UsType *aTypePtr, int aPos) override
Definition WsfScriptData.cpp:1287
void VarDecl(UsSymbol *aSymbolPtr, Us::Token *ident) override
Definition WsfScriptData.cpp:1313
int mDotLHS_Pos
Definition WsfScriptData.hpp:393
std::vector< CallInfo > mCurrentCalls
Definition WsfScriptData.hpp:386
UsType * mLHS_Type
Definition WsfScriptData.hpp:388
void CallArgNext(int aPos) override
Definition WsfScriptData.cpp:1368
UsVal mLHS_Val
Definition WsfScriptData.hpp:387
bool mEOF_Hit
Definition WsfScriptData.hpp:391
std::vector< UsSymbolTable * > mScopeStack
Definition WsfScriptData.hpp:384
void AcceptErrors(std::vector< WsfScriptParser::ErrorRecord > &aErrors) override
Definition WsfScriptData.hpp:416
void PushScope(UsSymbolTable *aSymTablePtr) override
Definition WsfScriptData.cpp:1301
void AtStat() override
Definition WsfScriptData.cpp:1282
WsfScriptDetailObserver(WsfScriptInfo *aScriptPtr)
Definition WsfScriptData.hpp:396
LHS_Kind mLHS_Kind
Definition WsfScriptData.hpp:389
void EndCall(const UsVal &v, int aPos) override
Definition WsfScriptData.cpp:1343
void ScriptDefinition(UsSymbolTable *aFuncSymTable, UsSymbol *aSymbolPtr) override
Definition WsfScriptData.cpp:1276
bool mRecordErrors
Definition WsfScriptData.hpp:392
void PopScope(UsSymbolTable *aTablePtr) override
Definition WsfScriptData.cpp:1305
LHS_Kind
Definition WsfScriptData.hpp:354
@ cTYPE
Definition WsfScriptData.hpp:355
@ cVALUE
Definition WsfScriptData.hpp:356
void BeginCall(const UsVal &v, int aPos) override
Definition WsfScriptData.cpp:1323
void HitEOF() override
Definition WsfScriptData.cpp:1318
std::vector< WsfScriptParser::ErrorRecord > mErrorRecords
Definition WsfScriptData.hpp:383
Definition WsfScriptData.hpp:77
std::vector< WsfScriptToken > mTokens
Definition WsfScriptData.hpp:100
WsfScriptContainer * mParent
Definition WsfScriptData.hpp:94
UtTextRange mBlockRange
Definition WsfScriptData.hpp:99
UtTextDocumentLocation mLocation
Definition WsfScriptData.hpp:95
UsSymbol * mSymbolPtr
Definition WsfScriptData.hpp:104
BlockType mBlockType
Definition WsfScriptData.hpp:102
WsfScriptInfo()
Definition WsfScriptData.hpp:79
void SetRange(UtTextDocumentRange aRange)
Definition WsfScriptData.cpp:1476
UtTextDocumentRange mRange
Definition WsfScriptData.hpp:97
UsSymbolTable * mSymbolTablePtr
Definition WsfScriptData.hpp:105
std::vector< std::pair< int, int > > mErrors
Definition WsfScriptData.hpp:101
BlockType
Definition WsfScriptData.hpp:87
@ cSCRIPT_VARIABLES
Definition WsfScriptData.hpp:90
@ cFUNCTION
Definition WsfScriptData.hpp:88
@ cIMPLICIT_SCRIPT
Definition WsfScriptData.hpp:89
WsfScriptInfo * mScriptPtr
Definition WsfScriptData.hpp:318
void ScriptDefinition(UsSymbolTable *aFuncSymTable, UsSymbol *aSymbolPtr) override
Definition WsfScriptData.hpp:330
std::vector< SpecialTok > mSpecialTokens
Definition WsfScriptData.hpp:324
void VarDecl(UsSymbol *aSymbolPtr, Us::Token *ident) override
Definition WsfScriptData.hpp:338
void SpecialToken(SpecialTokenType aType, Us::Token *t) override
Definition WsfScriptData.hpp:340
WsfScriptNormalObserver(WsfScriptInfo *aScriptPtr)
Definition WsfScriptData.hpp:325
void PushScope(UsSymbolTable *aSymTablePtr) override
Definition WsfScriptData.hpp:336
void PopScope(UsSymbolTable *aTablePtr) override
Definition WsfScriptData.hpp:337
void HitEOF() override
Definition WsfScriptData.hpp:339
Definition WsfScriptData.hpp:310
virtual void AcceptErrors(std::vector< WsfScriptParser::ErrorRecord > &aErrors)
Definition WsfScriptData.hpp:312
void ProcessScript(WsfScriptInfo *aScriptPtr, const char *aTextPtr, size_t aTextLength, UsCtx &aStartCtx, int aProcessFlags, WsfScriptObserver *aObserverPtr=nullptr)
Definition WsfScriptData.cpp:743
std::vector< TypeEntry > mTypeStack
Definition WsfScriptData.hpp:283
void Rebuild(WsfParseNode *aParseTree, WsfParseType &aSymbolTable)
Definition WsfScriptData.cpp:30
WsfScriptParser(WsfScriptTypes *aTypesPtr, WsfScriptData *aDataPtr)
Definition WsfScriptData.cpp:845
UsConstCtx * mConstCtx
Definition WsfScriptData.hpp:285
ProcessScriptFlags
Definition WsfScriptData.hpp:262
@ cRECORD_ERROR_DETAILS
Definition WsfScriptData.hpp:265
@ cRECORD_TOKENS
Definition WsfScriptData.hpp:263
@ cDEFAULT_PROCESS_FLAGS
Definition WsfScriptData.hpp:268
@ cNO_SCOPE_CHANGE
Definition WsfScriptData.hpp:267
@ cRECORD_ERRORS
Definition WsfScriptData.hpp:264
@ cSAVE_RESULTS
Definition WsfScriptData.hpp:266
WsfScriptData * mDataPtr
Definition WsfScriptData.hpp:287
WsfScriptTypes * mTypesPtr
Definition WsfScriptData.hpp:286
Definition WsfScriptData.hpp:52
UtTextRange mRange
Definition WsfScriptData.hpp:71
Type mTokenType
Definition WsfScriptData.hpp:72
Type
Definition WsfScriptData.hpp:55
@ cLOCAL_VARIABLE
Definition WsfScriptData.hpp:66
@ cCOMMENT
Definition WsfScriptData.hpp:61
@ cPARAMETER
Definition WsfScriptData.hpp:67
@ cLOCAL_METHOD
Definition WsfScriptData.hpp:68
@ cOPERATOR
Definition WsfScriptData.hpp:58
@ cMETHOD
Definition WsfScriptData.hpp:65
@ cSTRING
Definition WsfScriptData.hpp:59
@ cSTATIC_METHOD
Definition WsfScriptData.hpp:64
@ cIDENTIFIER
Definition WsfScriptData.hpp:56
@ cKEYWORD
Definition WsfScriptData.hpp:57
@ cNUMBER
Definition WsfScriptData.hpp:60
bool operator<(const WsfScriptToken &aTok) const
Definition WsfScriptData.hpp:70
Definition WsfScriptData.hpp:213
UT_MEMORY_DEBUG_MARKER(cMDB_WsfScriptTypes)
UsConstCtx * mConstCtx
Definition WsfScriptData.hpp:240
std::vector< WsfParseTypePath > mTypeStack
Definition WsfScriptData.hpp:239
UsConstCtx * GetConstCtx()
Definition WsfScriptData.hpp:219
UsType * FindTypeOrMakeTemplate(const std::string &aName, std::map< std::string, std::vector< const WsfGrammar::M::Expr * > > &aTypeExpressions)
Definition WsfScriptData.cpp:522
WsfScriptTypes(const WsfScriptTypes &)=delete
void InitType(const std::string &aName, std::map< std::string, std::vector< const WsfGrammar::M::Expr * > > &aTypeExpressions)
Definition WsfScriptData.cpp:396
WsfScriptTypes(const WsfGrammar::M::Expr &aGrammar)
Definition WsfScriptData.cpp:539
~WsfScriptTypes()
Definition WsfScriptData.cpp:913
void CopyInheritedMethods(UsType *aTypePtr)
Definition WsfScriptData.cpp:918
Definition WsfParseGrammar.cpp:20
Definition WsfParseGrammar.cpp:18
void swap(WsfRoute &aLhs, WsfRoute &aRhs)
Definition WsfRoute.hpp:294
Definition WsfSensorErrorModel.hpp:21
CallInfo()
Definition WsfScriptData.hpp:366
size_t mOpenParenPos
Definition WsfScriptData.hpp:380
std::string mMethodName
Definition WsfScriptData.hpp:376
size_t mCloseParenPos
Definition WsfScriptData.hpp:381
const UsVal * mValPtr
Definition WsfScriptData.hpp:379
int mCurrentArg
Definition WsfScriptData.hpp:378
int mPrototypeId
Definition WsfScriptData.hpp:377
UsType * mMethodBaseType
Definition WsfScriptData.hpp:375
Definition WsfScriptData.hpp:359
std::string mText
Definition WsfScriptData.hpp:360
int mLength
Definition WsfScriptData.hpp:362
int mPosition
Definition WsfScriptData.hpp:361
Definition WsfScriptData.hpp:320
UtTextRange range
Definition WsfScriptData.hpp:321
UsObserver::SpecialTokenType tokType
Definition WsfScriptData.hpp:322
Definition WsfScriptData.hpp:249
int mLength
Definition WsfScriptData.hpp:252
std::string mText
Definition WsfScriptData.hpp:250
int mPosition
Definition WsfScriptData.hpp:251
Definition WsfScriptData.hpp:279
WsfParseTypePath mLoadKey
Definition WsfScriptData.hpp:280
WsfParseTypePath mSaveKey
Definition WsfScriptData.hpp:281
std::string mName
Definition WsfScriptData.hpp:229
AppVar()
Definition WsfScriptData.hpp:223
UsType * mTypePtr
Definition WsfScriptData.hpp:230
bool mIsThis
Definition WsfScriptData.hpp:228