WSF
UsCtx.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11#ifndef UTCTX_HPP
12#define UTCTX_HPP
13
14#include <UtReferenceCount.hpp>
15
16#include "Scanner.h"
17#include "UsSymbolTable.hpp"
18#include "UtMemory.hpp"
19
21// WARNING: Large portions of this file are kept in sync with
22// util/source/UtScriptLanguageCtx.hpp
24// Script Parser:
25// The script parser is divided into these parts:
26// * script.atg - The grammar file. An input into the COCO/R parser generator.
27// Results in the Us::Parser and Us::Scanner classes
28// * UsCtx - Maintains a syntactic context while parsing a script. Used almost exclusively by script.atg
29// * UsVal - A script object, function, value, etc... to be used while parsing.
30// * UtScriptParser - A front end to the script parser
31
33
34namespace Us
35{
36class Parser;
37class UsCtx;
40class UsVal;
41
42using Cx = UsCtx;
43using Ty = UsType;
44using Fn = UsFunction;
45using Val = UsVal;
46
47// Initializer lists are the result of parsing the '{' ... '}' syntax for representing containers
48// This object stores information about the values as they were parsed without knowledge of any left-hand
49// side type information. At a later time, initializer lists are 'realized' as a container value.
51{
52public:
55
56 UtReferenceCount* GetReferenceCount() const { return mRefCount; }
57
58 void AddRef() { mRefCount->AddStrongRef(); }
59 void RemoveRef()
60 {
61 if (mRefCount->RemoveStrongRef())
62 delete this;
63 }
64
66
67private:
68 UtReferenceCount* mRefCount;
69};
70
71// Represents a script value during the compilation process
72class UsVal
73{
74public:
86
88 : mSym()
89 , mType()
90 , mMethodNamePtr(nullptr)
91 {
92 }
93 UsVal(const UsVal& aRhs)
94 : mSym(aRhs.mSym)
95 , mType(aRhs.mType)
96 , mInitList(aRhs.mInitList)
98 {
99 }
100 UsVal& operator=(const UsVal&) = default;
101 bool IsEmpty() const { return mSym == nullptr && mType == nullptr && !mInitList.IsValid(); }
102 Ty* Type() { return mType; }
103 std::string TypeName();
104
105 bool IsAppMethod() const
106 {
107 // Class method using an implied class reference
108 return (mMethodNamePtr != nullptr) && (mType != nullptr);
109 }
110
111 bool IsScript() const
112 {
113 // User-defined script
114 return (mMethodNamePtr == nullptr) && (mType == nullptr) && (mSym != nullptr);
115 }
116
117 // The symbol if this is a symbol, null if not a symbol
119 // The type of value. May be null.
120 // In the case of an App method, this is the type of the class containing the method
122 // If this value is an initializer list, this points to it
123 UtReferencePtr<UsInitializerList> mInitList;
124 // To represent a method, the name is pointed to here,
125 // and the class type is pointed to by mType
126 const char* mMethodNamePtr;
127};
128
129// The data inside an initializer list. Required to be separate due to order of definition
131{
132 struct Entry
133 {
136 };
137 std::vector<Entry> mEntries;
138};
139
140using UsValList = std::vector<UsVal>;
141
142// May be subclassed to handle information resulting from script parsing
144{
145public:
153 virtual ~UsObserver() {}
154 virtual void ScriptDefinition(UsSymbolTable* aFuncSymTable, UsSymbol* aSymbolPtr) = 0;
155 virtual void VarDecl(UsSymbol* aSymbolPtr, Token* ident) = 0;
156 virtual void PushScope(UsSymbolTable* aSymTablePtr) = 0;
157 virtual void PopScope(UsSymbolTable* aSymTablePtr) = 0;
158 virtual void AtStat() {}
159 virtual void AtDot(Ty* aTypePtr, int aPos) {}
160 virtual void AtDot(UsVal aVal, int aPos) {}
161 virtual void HitEOF() = 0;
162 virtual void SpecialToken(SpecialTokenType aType, Token* tok) {}
163 virtual void BeginCall(const UsVal&, int aPos) {}
164 virtual void EndCall(const UsVal&, int aPos) {}
165 virtual void CallArgNext(int aPos) {}
166};
167
168// Contains script information that is shared by all contexts
201
202// Represents a script context. This is the primary interface used by the parser.
203class UsCtx
204{
205public:
210
220 // Parent context. This context is syntactically nested in the parent.
222 // Pointer to data shared by all contexts
225 // UsCtx* p;
228 bool mAllowGlobals; // globals may be disabled, allowing a single block to be processed without affecting the global state.
231 static const int cLARGE_INT = 0x7fffffff;
233
234 explicit UsCtx(UsConstCtx* c);
236 void EndContext();
237 // Create a new context for the purpose of reparsing a single script.
238 static std::unique_ptr<UsCtx> NewMirror(UsConstCtx* c, UsSymbolTable* aParentSymbolTable, int aSequenceNumberLimit)
239 {
240 auto ctx = ut::make_unique<UsCtx>(c);
241 ctx->mSequenceNumberLimit = aSequenceNumberLimit;
242 // compile this new context inside of the context we want to mirror
243 // Add as a local scope linkage to keep the same symbol lookup depth
244 ctx->mSym->AddOuter(UsSymbolTable::cLOCAL_SCOPE, aParentSymbolTable);
245 ctx->mContextFlags |= cTEMPORARY_SYMBOL_TABLE;
246 return ctx;
247 }
248
249 ~UsCtx();
250 UsObserver* GetObserver() const { return mConst->mObserverPtr; }
251 Ty* qType(Token* t);
252 Ty* Type(Token* t);
253 Ty* qType(Ty* aTypePtr, std::pair<Ty*, Ty*> aArgs);
254
255 void AddParam(Fn& fn, Ty* type, Token* aIdent, bool aIsFormalParam = false);
256 void SetRType(Fn& fn, Ty* type);
257 void FuncDefStart(UsVal& aScriptVal);
258
259 UsVal AddEntry(Token* aIdent, Fn& aFunc, bool aExtern, UsCtx* aFnCtx = nullptr);
260 UsSymbol* Search(const std::string& aName, int aDepth = 100)
261 {
262 return mSym->Search(aName, aDepth, mSequenceNumberLimit);
263 }
264
265 // Returns 'true' if the token is the name of a method on the 'this' type.
266 bool IsThisMethod(Token* t);
267
269 UsSymbol* AddAppVariable(Ty* type, const std::string& aName);
270
271 UsSymbol* AddEntry(Ty* type, Token* aIdent, int aVarFlags = 0);
272 UsVal SymVal(UsSymbol* aSym);
273 UsVal Identifier(Token* aIdent);
274 UsVal Search(Token* aIdent);
275 Ty* RType(UsSymbol* s);
276 Ty* FuncRType();
277 std::string Text(Token* t);
303 UsVal Op(UsVal& lhs, int op);
304 UsVal Ctor(Ty* aType, const UsValList& aArgs);
305 UsVal Op(UsVal& lhs, UsVal& idx, UsVal& rhs, int op);
306 UsVal Op(UsVal& lhs, UsVal& rhs, int op);
307 // Returns a map's key type if the type is a map
308 Ty* GetContainerKey(Ty* aType);
309 // Returns the type of value a container holds
310 Ty* GetContainerValue(Ty* aType);
311 // { ... p1 : p2 , ... }
312 void AddToInitializerList(UsVal& initList, UsVal& p1, UsVal* p2); // UsVal& val, UsVal* key);
313 UsVal Cast(UsVal& v, Ty* ty);
320 UsVal RealizeContainer(UsInitializerList& aInitializer, Ty* aLhsType);
321 UsVal ImplicitCast(UsVal v, Ty* ty);
322 UsVal ExplicitCast(UsVal& v, Ty* ty);
323 void ExpectedType(UsVal& v, Ty* t);
325 UsVal GetAttribute(Ty* ty, Token* t);
329 UsVal VarDecl(Ty* ty, Token* t, int flags = 0);
330 UsVal Call(UsVal& fn, UsValList& args, UsVal* aReturnVal = nullptr);
331 void VarDeclInit(UsVal& v);
332 void VarDeclPreAssign(UsVal& v);
333 Ty* BoolTy() { return mConst->tyBool; }
334 Ty* VoidTy() { return mConst->tyVoid; }
335 Ty* IntTy() { return mConst->tyInt; }
336 void AtDot(Ty* aTypePtr, int pos);
337 void AtDot(const UsVal& aVal, int pos);
338 void HitEOF();
339 UsVal AndComplete(UsVal& orResult, UsVal& rhs, int aJumpOffset);
340 void WhileCond(UsVal& v);
341 void WhileEnd(int aEnd);
342 int OrCheck(UsVal& aLhs, UsVal& aOrResult);
343 UsVal OrComplete(UsVal& orResult, UsVal& rhs, int aJumpOffset);
344
345 int AndCheck(UsVal& aLhs, UsVal& aOrResult);
346 int IfCond(UsVal& v);
347 int IfTrueEnd(int falseTarget, bool aHasElse);
348 void IfElseEnd(int aElseEnd);
349 void SetBlockType(BlockType aBlockType);
350 void Break();
351 void Continue();
352 void DoWhileStart();
353 void DoCond(UsVal& v);
354 void ForCond(UsVal& v);
355 void ForInc();
356 void ForEnd();
357 void ForEachBegin(UsVal& key, UsVal& val, UsVal& container);
358 void Return(UsVal& v);
359 void FuncComplete(UsVal& aFnVal, UsCtx& aFnCtx);
360 int CodeOffset();
362 int BeginStat();
363 void EndStat(int aStatNum);
364
365 void SemErr(const char* aMsg);
366 void BeginCall(UsVal& fn, int aPos);
367 void EndCall(UsVal& fn, int aPos);
368 void CallArgNext(int aPos);
369
370
371 UsVal NewVal(Ty* ty);
372};
373
374
375inline void UsCtx::AtDot(Ty* aTypePtr, int pos)
376{
377 if (mConst->mObserverPtr)
378 {
379 mConst->mObserverPtr->AtDot(aTypePtr, pos);
380 }
381}
382inline void UsCtx::AtDot(const UsVal& aVal, int pos)
383{
384 if (mConst->mObserverPtr)
385 {
386 mConst->mObserverPtr->AtDot(aVal, pos);
387 }
388}
389inline void UsCtx::HitEOF()
390{
391 if (GetObserver())
392 {
393 GetObserver()->HitEOF();
394 }
395}
396// Inline unused functions here
397inline void UsCtx::EndContext() {}
398inline void UsCtx::VarDeclInit(UsVal& v) {}
400inline UsVal UsCtx::AndComplete(UsVal& orResult, UsVal& rhs, int aJumpOffset)
401{
402 return mConst->ValFromType(mConst->tyBool);
403}
404inline void UsCtx::WhileCond(UsVal& v) {}
405inline void UsCtx::WhileEnd(int aEnd) {}
406inline int UsCtx::OrCheck(UsVal& aLhs, UsVal& aOrResult)
407{
408 return -1;
409}
410inline UsVal UsCtx::OrComplete(UsVal& orResult, UsVal& rhs, int aJumpOffset)
411{
412 return mConst->ValFromType(mConst->tyBool);
413}
414
415inline int UsCtx::AndCheck(UsVal& aLhs, UsVal& aOrResult)
416{
417 return -1;
418}
419inline int UsCtx::IfCond(UsVal& v)
420{
421 return -1;
422}
423inline int UsCtx::IfTrueEnd(int falseTarget, bool aHasElse)
424{
425 return -1;
426}
427inline void UsCtx::IfElseEnd(int aElseEnd) {}
428inline void UsCtx::SetBlockType(BlockType aBlockType) {}
429inline void UsCtx::Break() {}
430inline void UsCtx::Continue() {}
431inline void UsCtx::DoWhileStart() {}
432inline void UsCtx::DoCond(UsVal& v) {}
433inline void UsCtx::ForCond(UsVal& v) {}
434inline void UsCtx::ForInc() {}
435inline void UsCtx::ForEnd() {}
436inline void UsCtx::ForEachBegin(UsVal& key, UsVal& val, UsVal& container) {}
437inline void UsCtx::Return(UsVal& v) {}
438inline void UsCtx::FuncComplete(UsVal& aFnVal, UsCtx& aFnCtx) {}
440{
441 return -1;
442}
443inline void UsCtx::EndStat(int aStatNum) {}
444} // namespace Us
445
446#endif // UTCTX_HPP
UtVec3d pos
Definition WsfScriptTrackClass.cpp:1881
Definition UsSymbolTable.hpp:115
Definition UsSymbolTable.hpp:326
Definition UsSymbolTable.hpp:339
TableLinkage
Definition UsSymbolTable.hpp:347
@ cNEW_SCOPE
Definition UsSymbolTable.hpp:356
@ cLOCAL_SCOPE
Definition UsSymbolTable.hpp:354
Definition UsSymbolTable.hpp:281
Definition UsSymbolTable.hpp:139
Definition UsSymbolTable.hpp:202
Definition wizard/lib/source/Us/Parser.h:44
Definition wizard/lib/source/Us/Scanner.h:114
Definition UsCtx.hpp:170
Ty * tyInt
Definition UsCtx.hpp:190
Ty * tyBool
Definition UsCtx.hpp:189
int mNextSequenceNumber
Definition UsCtx.hpp:174
Ty * tyString
Definition UsCtx.hpp:192
Ty * tyChar
Definition UsCtx.hpp:193
Ty * tyDouble
Definition UsCtx.hpp:191
UsTypeList * mTypes
Definition UsCtx.hpp:173
Ty * tyNull
Definition UsCtx.hpp:186
int NextSequenceNumber()
Definition UsCtx.hpp:176
Ty * tyObject
Definition UsCtx.hpp:194
~UsConstCtx()
Definition UsCtx.cpp:41
UsVal ValFromType(Ty *aType)
Definition UsCtx.hpp:180
Ty * tyVoid
Definition UsCtx.hpp:187
Ty * tyBuiltin
Definition UsCtx.hpp:195
UsConstCtx()
Definition UsCtx.cpp:22
Us::Parser * mParser
Definition UsCtx.hpp:172
Ty * tyVar
Definition UsCtx.hpp:188
UsSymbolTablePool * mSymbolTablePoolPtr
Definition UsCtx.hpp:199
UsObserver * mObserverPtr
Definition UsCtx.hpp:197
Definition UsCtx.hpp:204
BlockType mBlockType
Definition UsCtx.hpp:232
int mSequenceNumberLimit
Definition UsCtx.hpp:230
int BeginStat()
Definition UsCtx.cpp:994
UsConstCtx * mConst
Definition UsCtx.hpp:223
void DoWhileStart()
Definition UsCtx.hpp:431
UsVal OrComplete(UsVal &orResult, UsVal &rhs, int aJumpOffset)
Definition UsCtx.hpp:410
UsVal VarDecl(Ty *ty, Token *t, int flags=0)
Definition UsCtx.cpp:465
void ExpectedType(UsVal &v, Ty *t)
Definition UsCtx.cpp:51
UsVal AndComplete(UsVal &orResult, UsVal &rhs, int aJumpOffset)
Definition UsCtx.hpp:400
int CodeOffset()
Definition UsCtx.hpp:439
UsVal GetClassVariable(UsVal &v, Token *t)
Definition UsCtx.cpp:219
UsVal ImplicitCast(UsVal v, Ty *ty)
Definition UsCtx.cpp:61
UsVal RealizeContainer(UsInitializerList &aInitializer, Ty *aLhsType)
Definition UsCtx.cpp:372
void AddToInitializerList(UsVal &initList, UsVal &p1, UsVal *p2)
Definition UsCtx.cpp:498
Ty * GetContainerValue(Ty *aType)
Definition UsCtx.cpp:529
void WhileCond(UsVal &v)
Definition UsCtx.hpp:404
UsSymbol * AddAppVariable(Ty *type, const std::string &aName)
Definition UsCtx.cpp:844
UsVal GetDynAttribute(UsVal &v, Token *t)
Definition UsCtx.cpp:170
UsCtx * mParentCtx
Definition UsCtx.hpp:221
bool mAllowGlobals
Definition UsCtx.hpp:228
UsVal NullLiteral(Token *t)
Definition UsCtx.cpp:662
UsVal ThisValue()
Definition UsCtx.cpp:868
void SetBlockType(BlockType aBlockType)
Definition UsCtx.hpp:428
UsVal IntLiteral(Token *t)
Definition UsCtx.cpp:652
void CallArgNext(int aPos)
Definition UsCtx.cpp:987
bool mGlobalVarMode
Definition UsCtx.hpp:227
void WhileEnd(int aEnd)
Definition UsCtx.hpp:405
UsVal GetClassMethod(UsVal &v, Token *t)
Definition UsCtx.cpp:181
UsVal Ctor(Ty *aType, const UsValList &aArgs)
Definition UsCtx.cpp:621
Ty * IntTy()
Definition UsCtx.hpp:335
static std::unique_ptr< UsCtx > NewMirror(UsConstCtx *c, UsSymbolTable *aParentSymbolTable, int aSequenceNumberLimit)
Definition UsCtx.hpp:238
void BeginCall(UsVal &fn, int aPos)
Definition UsCtx.cpp:975
Ty * FuncRType()
Definition UsCtx.cpp:681
UsVal Call(UsVal &fn, UsValList &args, UsVal *aReturnVal=nullptr)
Definition UsCtx.cpp:250
void DoCond(UsVal &v)
Definition UsCtx.hpp:432
UsVal GetAttribute(UsVal &v, Token *t)
Definition UsCtx.cpp:133
Ty * VoidTy()
Definition UsCtx.hpp:334
static const int cLARGE_INT
Definition UsCtx.hpp:231
UsVal Cast(UsVal &v, Ty *ty)
Definition UsCtx.cpp:637
int mContextFlags
Definition UsCtx.hpp:229
UsVal BoolLiteral(Token *t)
Definition UsCtx.cpp:657
UsVal SymVal(UsSymbol *aSym)
Definition UsCtx.cpp:744
void Break()
Definition UsCtx.hpp:429
void IfElseEnd(int aElseEnd)
Definition UsCtx.hpp:427
UsSymbolTable * mSym
Definition UsCtx.hpp:224
UsCtx * ScriptContext()
Definition UsCtx.cpp:915
void Continue()
Definition UsCtx.hpp:430
Ty * GetContainerKey(Ty *aType)
Definition UsCtx.cpp:534
OperationId
Definition UsCtx.hpp:279
@ cDIVIDE
Definition UsCtx.hpp:289
@ cINDEX
Definition UsCtx.hpp:300
@ cASSIGN_TIMES
Definition UsCtx.hpp:284
@ cADD
Definition UsCtx.hpp:286
@ cEQ
Definition UsCtx.hpp:292
@ cUNARY_MINUS
Definition UsCtx.hpp:298
@ cLE
Definition UsCtx.hpp:296
@ cLT
Definition UsCtx.hpp:294
@ cASSIGN_PLUS
Definition UsCtx.hpp:282
@ cASSIGN_INITIAL
Definition UsCtx.hpp:281
@ cNE
Definition UsCtx.hpp:293
@ cGT
Definition UsCtx.hpp:295
@ cASSIGN
Definition UsCtx.hpp:280
@ cUNARY_PLUS
Definition UsCtx.hpp:299
@ cASSIGN_DIV
Definition UsCtx.hpp:285
@ cOR
Definition UsCtx.hpp:290
@ cAND
Definition UsCtx.hpp:291
@ cASSIGN_MINUS
Definition UsCtx.hpp:283
@ cNOT
Definition UsCtx.hpp:301
@ cMULTIPLY
Definition UsCtx.hpp:288
@ cGE
Definition UsCtx.hpp:297
@ cSUBTRACT
Definition UsCtx.hpp:287
ContextFlags
Definition UsCtx.hpp:207
@ cTEMPORARY_SYMBOL_TABLE
Definition UsCtx.hpp:208
UsVal Identifier(Token *aIdent)
Definition UsCtx.cpp:967
BlockType
Definition UsCtx.hpp:212
@ cFOREACH_BLOCK
Definition UsCtx.hpp:218
@ cSCRIPT_BLOCK
Definition UsCtx.hpp:213
@ cDO_BLOCK
Definition UsCtx.hpp:216
@ cNORMAL_BLOCK
Definition UsCtx.hpp:214
@ cFOR_BLOCK
Definition UsCtx.hpp:217
@ cWHILE_BLOCK
Definition UsCtx.hpp:215
void VarDeclInit(UsVal &v)
Definition UsCtx.hpp:398
void AtDot(Ty *aTypePtr, int pos)
Definition UsCtx.hpp:375
Ty * BoolTy()
Definition UsCtx.hpp:333
UsVal DoubleLiteral(Token *t)
Definition UsCtx.cpp:647
void EndStat(int aStatNum)
Definition UsCtx.hpp:443
void SetRType(Fn &fn, Ty *type)
Definition UsCtx.cpp:895
std::string Text(Token *t)
Definition UsCtx.cpp:674
UsVal Op(UsVal &lhs, int op)
Definition UsCtx.cpp:608
void FuncDefStart(UsVal &aScriptVal)
Definition UsCtx.cpp:890
void FuncComplete(UsVal &aFnVal, UsCtx &aFnCtx)
Definition UsCtx.hpp:438
void ForInc()
Definition UsCtx.hpp:434
UsCtx(UsConstCtx *c)
Definition UsCtx.cpp:952
Ty * RType(UsSymbol *s)
Definition UsCtx.cpp:694
int IfTrueEnd(int falseTarget, bool aHasElse)
Definition UsCtx.hpp:423
Ty * qType(Token *t)
Definition UsCtx.cpp:323
void ForEnd()
Definition UsCtx.hpp:435
void HitEOF()
Definition UsCtx.hpp:389
int OrCheck(UsVal &aLhs, UsVal &aOrResult)
Definition UsCtx.hpp:406
UsSymbol * Search(const std::string &aName, int aDepth=100)
Definition UsCtx.hpp:260
UsVal ExplicitCast(UsVal &v, Ty *ty)
Definition UsCtx.cpp:89
UsSymbol * mFuncDefSym
Definition UsCtx.hpp:226
UsVal NewInitializerList()
Definition UsCtx.cpp:458
Ty * Type(Token *t)
Definition UsCtx.cpp:342
UsVal StringLiteral(Token *t)
Definition UsCtx.cpp:642
~UsCtx()
Definition UsCtx.cpp:927
void VarDeclPreAssign(UsVal &v)
Definition UsCtx.hpp:399
UsObserver * GetObserver() const
Definition UsCtx.hpp:250
void ForEachBegin(UsVal &key, UsVal &val, UsVal &container)
Definition UsCtx.hpp:436
void ForCond(UsVal &v)
Definition UsCtx.hpp:433
UsVal NewVal(Ty *ty)
Definition UsCtx.cpp:667
int IfCond(UsVal &v)
Definition UsCtx.hpp:419
void AddParam(Fn &fn, Ty *type, Token *aIdent, bool aIsFormalParam=false)
Definition UsCtx.cpp:903
void SemErr(const char *aMsg)
Definition UsCtx.cpp:46
void EndCall(UsVal &fn, int aPos)
Definition UsCtx.cpp:981
void EndContext()
Definition UsCtx.hpp:397
int AndCheck(UsVal &aLhs, UsVal &aOrResult)
Definition UsCtx.hpp:415
void Return(UsVal &v)
Definition UsCtx.hpp:437
UsVal AddEntry(Token *aIdent, Fn &aFunc, bool aExtern, UsCtx *aFnCtx=nullptr)
Definition UsCtx.cpp:811
bool IsThisMethod(Token *t)
Definition UsCtx.cpp:877
Definition UsCtx.hpp:51
UsInitializerListData * mDataPtr
Definition UsCtx.hpp:65
void RemoveRef()
Definition UsCtx.hpp:59
~UsInitializerList()
Definition UsCtx.cpp:1017
void AddRef()
Definition UsCtx.hpp:58
UtReferenceCount * GetReferenceCount() const
Definition UsCtx.hpp:56
UsInitializerList()
Definition UsCtx.cpp:1011
Definition UsCtx.hpp:144
virtual void PopScope(UsSymbolTable *aSymTablePtr)=0
virtual ~UsObserver()
Definition UsCtx.hpp:153
SpecialTokenType
Definition UsCtx.hpp:147
@ cSTATIC_METHOD
Definition UsCtx.hpp:148
@ cLOCAL_VARIABLE
Definition UsCtx.hpp:150
@ cMETHOD
Definition UsCtx.hpp:149
@ cPARAMETER
Definition UsCtx.hpp:151
virtual void AtDot(Ty *aTypePtr, int aPos)
Definition UsCtx.hpp:159
virtual void HitEOF()=0
virtual void CallArgNext(int aPos)
Definition UsCtx.hpp:165
virtual void SpecialToken(SpecialTokenType aType, Token *tok)
Definition UsCtx.hpp:162
virtual void EndCall(const UsVal &, int aPos)
Definition UsCtx.hpp:164
virtual void BeginCall(const UsVal &, int aPos)
Definition UsCtx.hpp:163
virtual void AtDot(UsVal aVal, int aPos)
Definition UsCtx.hpp:160
virtual void VarDecl(UsSymbol *aSymbolPtr, Token *ident)=0
virtual void PushScope(UsSymbolTable *aSymTablePtr)=0
virtual void AtStat()
Definition UsCtx.hpp:158
virtual void ScriptDefinition(UsSymbolTable *aFuncSymTable, UsSymbol *aSymbolPtr)=0
Definition UsCtx.hpp:73
bool IsAppMethod() const
Definition UsCtx.hpp:105
UsVal()
Definition UsCtx.hpp:87
bool IsEmpty() const
Definition UsCtx.hpp:101
Ty * mType
Definition UsCtx.hpp:121
UsSymbol * mSym
Definition UsCtx.hpp:118
UsVal(const UsVal &aRhs)
Definition UsCtx.hpp:93
const char * mMethodNamePtr
Definition UsCtx.hpp:126
Flags
Definition UsCtx.hpp:76
@ cLOCAL_VARIABLE
Definition UsCtx.hpp:77
@ cPARAMETER_VARIABLE
Definition UsCtx.hpp:84
@ cEXTERN_VARIABLE
Definition UsCtx.hpp:80
@ cTEMPORARY_VARIABLE
Definition UsCtx.hpp:81
@ cGLOBAL_VARIABLE
Definition UsCtx.hpp:79
@ cSTATIC_VARIABLE
Definition UsCtx.hpp:78
UsVal & operator=(const UsVal &)=default
bool IsScript() const
Definition UsCtx.hpp:111
UtReferencePtr< UsInitializerList > mInitList
Definition UsCtx.hpp:123
Ty * Type()
Definition UsCtx.hpp:102
std::string TypeName()
Definition UsCtx.cpp:1002
Definition wizard/lib/source/Us/Parser.cpp:18
std::vector< UsVal > UsValList
Definition UsCtx.hpp:140
UsType Ty
Definition UsCtx.hpp:43
UsFunction Fn
Definition UsCtx.hpp:44
UsCtx Cx
Definition UsCtx.hpp:42
UsVal Val
Definition UsCtx.hpp:45
Definition UsCtx.hpp:133
UsVal val
Definition UsCtx.hpp:135
UsVal key
Definition UsCtx.hpp:134
Definition UsCtx.hpp:131
std::vector< Entry > mEntries
Definition UsCtx.hpp:137
Copyrights Multiple, All Rights Reserved