RexxSource Class Reference

#include <SourceFile.hpp>

Inheritance diagram for RexxSource:
[legend]

Public Member Functions

void * operator new (size_t)
 
void * operator new (size_t size, void *ptr)
 
void operator delete (void *)
 
void operator delete (void *, void *)
 
 RexxSource (RexxString *, RexxArray *)
 
 RexxSource (RexxString *programname, RexxBuffer *source_buffer)
 
 RexxSource (RexxString *programname, const char *data, size_t length)
 
 RexxSource (RexxString *programname)
 
 RexxSource (RESTORETYPE restoreType)
 
void setIsBlock (bool b)
 
bool getIsBlock ()
 
void initBuffered (RexxBuffer *)
 
void initFile ()
 
void extractNameInformation ()
 
bool reconnect ()
 
void setReconnect ()
 
void setBufferedSource (RexxBuffer *newSource)
 
void interpretLine (size_t)
 
void adjustLine (size_t, size_t)
 
void comment ()
 
void needVariable (RexxToken *)
 
void needVariableOrDotSymbol (RexxToken *)
 
bool terminator (int, RexxObject *)
 
void nextLine ()
 
void position (size_t, sizeB_t)
 
void live (size_t)
 
void liveGeneral (int reason)
 
void flatten (RexxEnvelope *)
 
size_t sourceSize ()
 
RexxStringget (size_t)
 
void nextClause ()
 
RexxTokensourceNextToken (RexxToken *)
 
RexxTokensourceLiteral (size_t, SourceLocation)
 
RexxStringtraceBack (RexxActivation *, SourceLocation &, size_t, bool)
 
RexxStringextract (SourceLocation &, bool=false)
 
RexxArrayextractSource (SourceLocation &)
 
RexxArrayextractSource ()
 
void startLocation (SourceLocation &)
 
void endLocation (SourceLocation &)
 
bool nextSpecial (unsigned int, SourceLocation &)
 
unsigned int locateToken (RexxToken *)
 
void globalSetup ()
 
RexxStringpackLiteral (sizeB_t, sizeB_t, int)
 
RexxCodegenerateCode (bool isMethod)
 
RexxCodeinterpretMethod (RexxDirectory *, RexxActivation *)
 
RexxCodeinterpret (RexxString *, RexxDirectory *, size_t, RexxActivation *)
 
void checkDirective (int errorCode)
 
bool hasBody ()
 
RexxObjecttoss (RexxObject *)
 
void cleanup ()
 
void mergeRequired (RexxSource *)
 
PackageClassloadRequires (RexxActivity *activity, RexxString *target)
 
PackageClassloadRequires (RexxActivity *activity, RexxString *target, RexxArray *s)
 
void addPackage (PackageClass *package)
 
PackageClassgetPackage ()
 
void inheritSourceContext (RexxSource *source)
 
RoutineClassfindRoutine (RexxString *)
 
RoutineClassfindLocalRoutine (RexxString *)
 
RoutineClassfindPublicRoutine (RexxString *)
 
RexxClassfindClass (RexxString *)
 
RexxClassfindInstalledClass (RexxString *name)
 
RexxClassfindPublicClass (RexxString *name)
 
RexxStringresolveProgramName (RexxActivity *activity, RexxString *name)
 
void processInstall (RexxActivation *)
 
void install ()
 
RexxCodetranslate (RexxDirectory *)
 
void resolveDependencies ()
 
void directive ()
 
void routineDirective ()
 
void requiresDirective ()
 
void libraryDirective (RexxString *name, RexxToken *token)
 
void methodDirective ()
 
void classDirective ()
 
void extensionDirective ()
 
void attributeDirective ()
 
void constantDirective ()
 
void optionsDirective ()
 
void decodeExternalMethod (RexxString *methodName, RexxString *externalSpec, RexxString *&library, RexxString *&procedure)
 
RexxMethodcreateNativeMethod (RexxString *name, RexxString *library, RexxString *procedure)
 
void createMethod (RexxString *name, bool classMethod, bool privateMethod, bool protectedMethod, bool guardedMethod)
 
void createAttributeGetterMethod (RexxString *name, RexxVariableBase *retriever, bool classMethod, bool privateMethod, bool protectedMethod, bool guardedMethod)
 
void createAttributeSetterMethod (RexxString *name, RexxVariableBase *retriever, bool classMethod, bool privateMethod, bool protectedMethod, bool guardedMethod)
 
void createConstantGetterMethod (RexxString *name, RexxObject *value)
 
void createAbstractMethod (RexxString *name, bool classMethod, bool privateMethod, bool protectedMethod, bool guardedMethod)
 
void checkDuplicateMethod (RexxString *name, bool classMethod, int errorMsg)
 
void addMethod (RexxString *name, RexxMethod *method, bool classMethod)
 
void flushControl (RexxInstruction *)
 
RexxCodetranslateBlock (RexxDirectory *)
 
RexxInstructioninstruction ()
 
RexxVariableBaseaddVariable (RexxString *)
 
RexxStemVariableaddStem (RexxString *)
 
RexxCompoundVariableaddCompound (RexxString *)
 
void expose (RexxString *)
 
RexxStringcommonString (RexxString *)
 
RexxObjectaddText (RexxToken *)
 
RexxObjectaddVariable (RexxToken *)
 
void addClause (RexxInstruction *)
 
void addLabel (RexxInstruction *, RexxString *)
 
RexxInstructionfindLabel (RexxString *)
 
void setGuard ()
 
RexxArraygetGuard ()
 
void addBlock (void)
 
RexxVariableBasegetRetriever (RexxString *)
 
RexxObjectconstantExpression ()
 
RexxObjectconstantLogicalExpression ()
 
RexxObjectparenExpression (RexxToken *)
 
RexxObjectexpression (int)
 
RexxObjectsubExpression (int)
 
RexxObjectfullSubExpression (int)
 
void argList (RexxToken *, int, bool, size_t &, size_t &)
 
void argArray (RexxToken *, int, bool, RexxArray *&, RexxArray *&)
 
RexxObjectfunction (RexxToken *, RexxToken *, int)
 
RexxObjectfunctionCallMessage (RexxToken *, RexxObject *, int)
 
RexxObjectcollectionMessage (RexxToken *, RexxObject *, int)
 
RexxTokengetToken (int, int)
 
RexxObjectmessage (RexxObject *, bool, int)
 
RexxObjectmessageTerm ()
 
RexxObjectvariableOrMessageTerm ()
 
RexxObjectmessageSubterm (int)
 
RexxObjectsubTerm (int)
 
void pushTerm (RexxObject *)
 
void pushSubTerm (RexxObject *)
 
RexxObjectpopTerm ()
 
RexxObjectpopSubTerm ()
 
RexxObjectpopNTerms (size_t)
 
void isExposeValid ()
 
RexxArraywords (RexxString *)
 
void errorCleanup ()
 
void error (int)
 
void error (int, RexxObject *)
 
void error (int, RexxObject *, RexxObject *)
 
void error (int, RexxObject *, RexxObject *, RexxObject *)
 
void error (int errorcode, SourceLocation &location, RexxArray *subs)
 
void errorLine (int, RexxInstruction *)
 
void errorPosition (int, SourceLocation)
 
void errorToken (int, RexxToken *)
 
void blockError (RexxInstruction *)
 
RexxInstructionsourceNewObject (size_t, RexxBehaviour *, int)
 
size_t processVariableList (int)
 
RexxObjectparseConditional (int *, int)
 
RexxObjectparseLogical (RexxToken *first, int terminators)
 
bool terminator (int, RexxToken *)
 
bool isTraceable ()
 
bool isInterpret ()
 
bool needsInstallation ()
 
void install (RexxActivation *activation)
 
void addReference (RexxObject *reference)
 
void pushDo (RexxInstruction *i)
 
RexxInstructionpopDo ()
 
RexxInstructiontopDo ()
 
void setProgramName (RexxString *name)
 
RexxStringgetProgramName ()
 
RexxStringgetProgramDirectory ()
 
RexxStringgetProgramExtension ()
 
RexxStringgetProgramFile ()
 
RexxDirectorygetMethods ()
 
RexxDirectorygetRoutines ()
 
void pushOperator (RexxToken *operatorToken)
 
RexxTokenpopOperator ()
 
RexxTokentopOperator ()
 
void reclaimClause ()
 
bool atEnd (void)
 
RexxTokennextToken ()
 
RexxTokennextReal ()
 
void previousToken ()
 
void firstToken ()
 
void trimClause ()
 
size_t markPosition ()
 
void resetPosition (size_t p)
 
void syntaxError (int errorcode, RexxInstruction *i)
 
void blockSyntaxError (RexxInstruction *i)
 
void syntaxErrorAt (int errorcode, RexxToken *token)
 
void syntaxErrorAt (int errorcode, SourceLocation token_location)
 
void syntaxError (int errorcode, RexxObject *a1)
 
void syntaxError (int errorcode, RexxObject *a1, RexxObject *a2)
 
void syntaxError (int errorcode, RexxObject *a1, RexxObject *a2, RexxObject *a3)
 
void syntaxError (int errorcode, RexxToken *token)
 
void syntaxError (int errorcode)
 
bool isInternalCode ()
 
StackFrameClasscreateStackFrame ()
 
RexxInstructionaddressNew ()
 
RexxInstructionassignmentNew (RexxToken *)
 
RexxInstructionassignmentOpNew (RexxToken *, RexxToken *)
 
RexxInstructioncallNew ()
 
RexxInstructioncommandNew ()
 
RexxInstructiondoNew ()
 
RexxInstructionloopNew ()
 
RexxInstructioncreateLoop ()
 
RexxInstructioncreateDoLoop ()
 
RexxInstructioncreateDoLoop (RexxInstructionDo *, bool)
 
RexxInstructiondropNew ()
 
RexxInstructionelseNew (RexxToken *)
 
RexxInstructionendNew ()
 
RexxInstructionendIfNew (RexxInstructionIf *)
 
RexxInstructionexitNew ()
 
RexxInstructionexposeNew ()
 
RexxInstructionforwardNew ()
 
void RexxInstructionForwardCreate (RexxInstructionForward *)
 
RexxInstructionguardNew ()
 
RexxInstructionifNew (int)
 
RexxInstructioninstructionNew (int)
 
RexxInstructioninterpretNew ()
 
RexxInstructionlabelNew ()
 
RexxInstructionleaveNew (int)
 
RexxInstructionmessageNew (RexxExpressionMessage *)
 
RexxInstructionmessageAssignmentNew (RexxExpressionMessage *, RexxObject *)
 
RexxInstructionmessageAssignmentOpNew (RexxExpressionMessage *, RexxToken *, RexxObject *)
 
RexxInstructionnopNew ()
 
RexxInstructionnumericNew ()
 
RexxInstructionoptionsNew ()
 
RexxInstructionotherwiseNew (RexxToken *)
 
RexxInstructionparseNew (int)
 
RexxInstructionprocedureNew ()
 
RexxInstructionqueueNew (int)
 
RexxInstructionraiseNew ()
 
RexxInstructionreplyNew ()
 
RexxInstructionreturnNew ()
 
RexxInstructionsayNew ()
 
RexxInstructionselectNew ()
 
RexxInstructionsignalNew ()
 
RexxInstructionthenNew (RexxToken *, RexxInstructionIf *)
 
RexxInstructiontraceNew ()
 
RexxInstructionupperNew ()
 
RexxInstructionuseNew ()
 
void holdObject (RexxObject *object)
 
void saveObject (RexxObject *object)
 
void removeObj (RexxObject *object)
 
void setSecurityManager (RexxObject *manager)
 
SecurityManagergetSecurityManager ()
 
RexxDirectorygetLocalRoutines ()
 
RexxDirectorygetPublicRoutines ()
 
void setLocalRoutines (RexxDirectory *r)
 
void setPublicRoutines (RexxDirectory *r)
 
void addInstalledClass (RexxString *name, RexxClass *classObject, bool publicClass)
 
void addInstalledRoutine (RexxString *name, RoutineClass *routineObject, bool publicRoutine)
 
RexxDirectorygetInstalledClasses ()
 
RexxDirectorygetInstalledPublicClasses ()
 
RexxDirectorygetImportedClasses ()
 
RexxDirectorygetInstalledRoutines ()
 
RexxDirectorygetInstalledPublicRoutines ()
 
RexxDirectorygetImportedRoutines ()
 
RexxDirectorygetDefinedMethods ()
 
RexxListgetPackages ()
 
size_t getDigits ()
 
bool getForm ()
 
size_t getFuzz ()
 
size_t getTraceSetting ()
 
size_t getTraceFlags ()
 
RexxStringgetTrace ()
 
bool getEnableCommands ()
 
bool getEnableMacrospace ()
 
- Public Member Functions inherited from RexxInternalObject
void * operator new (size_t, RexxClass *)
 
void * operator new (size_t, RexxClass *, RexxObject **, size_t, size_t)
 
void * operator new (size_t size, void *ptr)
 
void operator delete (void *)
 
void operator delete (void *p, void *ptr)
 
 RexxInternalObject ()
 
 RexxInternalObject (RESTORETYPE restoreType)
 
virtual ~RexxInternalObject ()
 
 operator RexxObject * ()
 
size_t getObjectSize ()
 
void setObjectSize (size_t s)
 
size_t getObjectDataSize ()
 
void * getObjectDataSpace ()
 
void clearObject ()
 
void clearObject (size_t l)
 
void setVirtualFunctions (void *t)
 
void setInitHeader (size_t s, size_t markword)
 
void setInitHeader (size_t markword)
 
void setObjectLive (size_t markword)
 
void setHasReferences ()
 
void setHasNoReferences ()
 
bool hasReferences ()
 
bool hasNoReferences ()
 
void setPrimitive ()
 
void setNonPrimitive ()
 
bool isPrimitive ()
 
bool isNonPrimitive ()
 
bool isObjectMarked (size_t markword)
 
void setObjectMark (size_t markword)
 
void clearObjectMark ()
 
bool isObjectLive (size_t mark)
 
bool isObjectDead (size_t mark)
 
bool isOldSpace ()
 
bool isNewSpace ()
 
void setNewSpace ()
 
void setOldSpace ()
 
void makeProxiedObject ()
 
bool isProxyObject ()
 
bool isSubClassOrEnhanced ()
 
bool isBaseClass ()
 
size_t getObjectTypeNumber ()
 
RexxBehaviourgetObjectType ()
 
bool isObjectType (RexxBehaviour *b)
 
bool isObjectType (size_t t)
 
bool isSameType (RexxInternalObject *o)
 
void setBehaviour (RexxBehaviour *b)
 
virtual RexxObjectmakeProxy (RexxEnvelope *)
 
virtual RexxObjectcopy ()
 
virtual RexxObjectevaluate (RexxActivation *, RexxExpressionStack *)
 
virtual RexxObjectgetValue (RexxActivation *)
 
virtual RexxObjectgetValue (RexxVariableDictionary *)
 
virtual RexxObjectgetRealValue (RexxActivation *)
 
virtual RexxObjectgetRealValue (RexxVariableDictionary *)
 
virtual void uninit ()
 
virtual HashCode hash ()
 
virtual HashCode getHashValue ()
 
HashCode identityHash ()
 
virtual bool truthValue (int)
 
virtual bool logicalValue (logical_t &)
 
virtual RexxStringmakeString ()
 
virtual void copyIntoTail (RexxCompoundTail *buffer)
 
virtual RexxStringprimitiveMakeString ()
 
virtual RexxArraymakeArray ()
 
virtual RexxStringstringValue ()
 
virtual RexxIntegerintegerValue (size_t)
 
virtual bool numberValue (wholenumber_t &result, size_t precision)
 
virtual bool numberValue (wholenumber_t &result)
 
virtual bool unsignedNumberValue (stringsize_t &result, size_t precision)
 
virtual bool unsignedNumberValue (stringsize_t &result)
 
virtual bool doubleValue (double &result)
 
virtual RexxNumberStringnumberString ()
 
virtual bool isEqual (RexxObject *)
 
virtual bool isInstanceOf (RexxClass *)
 
virtual RexxMethodinstanceMethod (RexxString *)
 
virtual RexxSupplierinstanceMethods (RexxClass *)
 
void hasUninit ()
 
void removedUninit ()
 
void printObject ()
 
RexxObjectclone ()
 
- Public Member Functions inherited from RexxVirtualBase
virtual RexxObjectunflatten (RexxEnvelope *)
 

Static Public Member Functions

static int resolveKeyword (RexxString *token, KeywordEntry *Table, int Table_Size)
 
static int subKeyword (RexxToken *)
 
static int keyword (RexxToken *)
 
static int builtin (RexxToken *)
 
static size_t resolveBuiltin (RexxString *)
 
static int condition (RexxToken *)
 
static int parseOption (RexxToken *)
 
static int keyDirective (RexxToken *)
 
static int subDirective (RexxToken *)
 
static int precedence (RexxToken *)
 
static bool parseTraceSetting (RexxString *, size_t &, size_t &, char &)
 
static RexxStringformatTraceSetting (size_t source)
 
static bool isSymbolCharacter (codepoint_t ch)
 
static int translateChar (codepoint_t ch)
 
- Static Public Member Functions inherited from RexxInternalObject
static size_t getObjectHeaderSize ()
 

Static Public Attributes

static pbuiltin builtinTable []
 
static const size_t TRACE_ALL = 'A'
 
static const size_t TRACE_COMMANDS = 'C'
 
static const size_t TRACE_LABELS = 'L'
 
static const size_t TRACE_NORMAL = 'N'
 
static const size_t TRACE_FAILURES = 'F'
 
static const size_t TRACE_ERRORS = 'E'
 
static const size_t TRACE_RESULTS = 'R'
 
static const size_t TRACE_INTERMEDIATES = 'I'
 
static const size_t TRACE_OFF = 'O'
 
static const size_t TRACE_IGNORE = '0'
 
static const size_t DEFAULT_TRACE_SETTING = TRACE_NORMAL
 
static const size_t TRACE_SETTING_MASK = 0xff
 
static const size_t DEBUG_IGNORE = 0x0000
 
static const size_t DEBUG_ON = 0x0100
 
static const size_t DEBUG_OFF = 0x0200
 
static const size_t DEBUG_TOGGLE = 0x0400
 
static const size_t DEBUG_NOTRACE = 0x0800
 
static const size_t TRACE_DEBUG_MASK = 0xff00
 

Protected Attributes

size_t flags
 
RexxArraysourceArray
 
RexxStringprogramName
 
RexxStringprogramDirectory
 
RexxStringprogramFile
 
RexxStringprogramExtension
 
SecurityManagersecurityManager
 
const char * current
 
RexxClauseclause
 
SourceLocation clauseLocation
 
RexxBuffersourceBuffer
 
RexxBuffersourceIndices
 
sizeB_t current_length
 
size_t line_count
 
size_t line_number
 
sizeB_t line_offset
 
size_t line_adjust
 
RexxActivationinterpret_activation
 
RexxCodeinitCode
 
RexxListloadedPackages
 
PackageClasspackage
 
RexxSourceparentSource
 
bool isBlock
 
RexxDirectoryroutines
 
RexxDirectorypublic_routines
 
RexxListlibraries
 
RexxListrequires
 
RexxListclasses
 
RexxListextensions
 
RexxDirectoryinstalled_public_classes
 
RexxDirectoryinstalled_classes
 
RexxDirectorymerged_public_classes
 
RexxDirectorymerged_public_routines
 
RexxDirectorymethods
 
size_t digits
 
size_t fuzz
 
bool form
 
size_t traceSetting
 
size_t traceFlags
 
bool enableCommands
 
bool enableMacrospace
 
intptr_t reserved1
 
intptr_t reserved2
 
intptr_t reserved3
 
intptr_t reserved4
 
RexxIdentityTablesavelist
 
RexxStackholdstack
 
RexxDirectoryliterals
 
RexxListsourceLiterals
 
RexxDirectorystrings
 
RexxQueuecontrol
 
RexxQueueterms
 
RexxQueuesubTerms
 
RexxQueuenamedSubTerms
 
RexxQueueoperators
 
RexxDirectoryclass_dependencies
 
ClassDirectiveactive_class
 
ExtensionDirectiveactive_extension
 
RexxInstructionfirst
 
RexxInstructionlast
 
RexxInstructioncurrentInstruction
 
RexxDirectoryvariables
 
RexxDirectorylabels
 
RexxIdentityTableguard_variables
 
RexxDirectoryexposed_variables
 
RexxListcalls
 
size_t currentstack
 
size_t maxstack
 
size_t variableindex
 

Static Protected Attributes

static KeywordEntry directives []
 
static KeywordEntry keywordInstructions []
 
static KeywordEntry subKeywords []
 
static KeywordEntry builtinFunctions []
 
static KeywordEntry conditionKeywords []
 
static KeywordEntry parseOptions []
 
static KeywordEntry subDirectives []
 
static int characterTable []
 

Friends

class RexxActivation
 

Additional Inherited Members

- Public Attributes inherited from RexxInternalObject
ObjectHeader header
 
RexxBehaviourbehaviour
 
- Protected Member Functions inherited from RexxVirtualBase
virtual ~RexxVirtualBase ()
 
virtual void baseVirtual ()
 

Detailed Description

Definition at line 132 of file SourceFile.hpp.

Constructor & Destructor Documentation

◆ RexxSource() [1/5]

RexxSource::RexxSource ( RexxString programname,
RexxArray source_array 
)

Create a source object with source provided from an array.

Parameters
programnameThe name of the program.
source_arrayThe array of the source lines.

Definition at line 113 of file SourceFile.cpp.

References line_count, OrefSet, position(), setProgramName(), RexxArray::size(), and sourceArray.

Referenced by interpret().

◆ RexxSource() [2/5]

RexxSource::RexxSource ( RexxString programname,
RexxBuffer source_buffer 
)

Create a source object with source provided from a buffer.

Parameters
programnameThe name of the program.
source_bufferThe source buffer holding the source data.

Definition at line 133 of file SourceFile.cpp.

References initBuffered(), and setProgramName().

◆ RexxSource() [3/5]

RexxSource::RexxSource ( RexxString programname,
const char *  data,
size_t  length 
)

Create a source object with source provided from a a data buffer (not a buffer object).

Parameters
programnameThe name of the program.
dataThe data buffer pointer.
lengththe size of the source buffer.

Definition at line 153 of file SourceFile.cpp.

References initBuffered(), new_buffer(), and setProgramName().

◆ RexxSource() [4/5]

RexxSource::RexxSource ( RexxString programname)

Create a source object with source provided from a filo.

Parameters
programnameThe name of the program (also the file name)

Definition at line 170 of file SourceFile.cpp.

References initFile(), and setProgramName().

◆ RexxSource() [5/5]

RexxSource::RexxSource ( RESTORETYPE  restoreType)
inline

Definition at line 143 of file SourceFile.hpp.

Member Function Documentation

◆ addBlock()

void RexxSource::addBlock ( void  )

◆ addClause()

◆ addCompound()

◆ addInstalledClass()

void RexxSource::addInstalledClass ( RexxString name,
RexxClass classObject,
bool  publicClass 
)

Add an installed class to this source package

Parameters
nameThe class name
classObjectThe class object
publicClassIndicates whether this needs to be added to the public list as well.

Definition at line 6881 of file SourceFile.cpp.

References install(), installed_classes, installed_public_classes, new_directory(), OREF_NULL, OrefSet, and RexxDirectory::setEntry().

Referenced by PackageClass::addClass(), PackageClass::addPublicClass(), and ClassDirective::install().

◆ addInstalledRoutine()

void RexxSource::addInstalledRoutine ( RexxString name,
RoutineClass routineObject,
bool  publicRoutine 
)

Add an installed routine to this source package

Parameters
nameThe routine name
classObjectThe routine object
publicClassIndicates whether this needs to be added to the public list as well.

Definition at line 6912 of file SourceFile.cpp.

References install(), new_directory(), OREF_NULL, OrefSet, public_routines, routines, and RexxDirectory::setEntry().

Referenced by PackageClass::addPublicRoutine(), and PackageClass::addRoutine().

◆ addLabel()

void RexxSource::addLabel ( RexxInstruction label,
RexxString labelname 
)

Definition at line 4907 of file SourceFile.cpp.

References RexxDirectory::fastAt(), labels, OREF_NULL, and RexxDirectory::put().

Referenced by labelNew().

◆ addMethod()

void RexxSource::addMethod ( RexxString name,
RexxMethod method,
bool  classMethod 
)

Add a new method to this compilation.

Parameters
nameThe directory name of the method.
methodThe method object.
classMethodThe class/instance method indicator.

Definition at line 2326 of file SourceFile.cpp.

References active_class, active_extension, ClassDirective::addMethod(), ExtensionDirective::addMethod(), methods, OREF_NULL, and RexxDirectory::setEntry().

Referenced by attributeDirective(), createAbstractMethod(), createAttributeGetterMethod(), createAttributeSetterMethod(), createConstantGetterMethod(), createMethod(), and methodDirective().

◆ addPackage()

void RexxSource::addPackage ( PackageClass p)

Add a package to a source file context. This allows new packages to be imported into a source.

Parameters
p

Definition at line 6832 of file SourceFile.cpp.

References RexxList::append(), PackageClass::getSourceObject(), RexxList::hasItem(), install(), loadedPackages, mergeRequired(), new_list(), OREF_NULL, and TheTrueObject.

Referenced by PackageClass::addPackage(), and loadRequires().

◆ addReference()

void RexxSource::addReference ( RexxObject reference)
inline

Definition at line 295 of file SourceFile.hpp.

References RexxList::addLast(), and calls.

Referenced by callNew(), function(), and signalNew().

◆ addressNew()

◆ addStem()

◆ addText()

◆ addVariable() [1/2]

◆ addVariable() [2/2]

RexxObject * RexxSource::addVariable ( RexxToken token)

Definition at line 4696 of file SourceFile.cpp.

References addText(), and needVariable().

◆ adjustLine()

void RexxSource::adjustLine ( size_t  start_line_number,
size_t  end_line_number 
)

Definition at line 365 of file SourceFile.cpp.

References line_adjust, line_count, and line_number.

Referenced by interpret(), and RoutineClass::RoutineClass().

◆ argArray()

void RexxSource::argArray ( RexxToken _first,
int  terminators,
bool  namedArgumentAllowed,
RexxArray *&  _argArray,
RexxArray *&  _namedArgArray 
)

◆ argList()

◆ assignmentNew()

RexxInstruction * RexxSource::assignmentNew ( RexxToken target)

◆ assignmentOpNew()

RexxInstruction * RexxSource::assignmentOpNew ( RexxToken target,
RexxToken operation 
)

Create a special assignment op of the form "variable (op)= expr".

Parameters
targetThe assignment target variable.
operationThe operator token. classId is TOKEN_ASSIGNMENT, the subclass is the type of the operation to perform.
Returns
The constructed instruction object.

Definition at line 198 of file InstructionParser.cpp.

References addText(), Error_Invalid_expression_assign, expression(), needVariable(), new_instruction, OREF_NULL, RexxToken::subclass, syntaxError(), and TERM_EOC.

Referenced by instruction().

◆ atEnd()

bool RexxSource::atEnd ( void  )
inline

Definition at line 310 of file SourceFile.hpp.

References flags, line_count, line_number, and reclaimed.

Referenced by translate().

◆ attributeDirective()

◆ blockError()

◆ blockSyntaxError()

void RexxSource::blockSyntaxError ( RexxInstruction i)
inline

Definition at line 320 of file SourceFile.hpp.

References blockError().

Referenced by translateBlock().

◆ builtin()

int RexxSource::builtin ( RexxToken token)
static

◆ callNew()

◆ checkDirective()

◆ checkDuplicateMethod()

void RexxSource::checkDuplicateMethod ( RexxString name,
bool  classMethod,
int  errorMsg 
)

check for a duplicate method.

Parameters
nameThe name to check.
classMethodIndicates whether this is a check for a CLASS or INSTANCE method.
errorMsgThe error code to use if there is a duplicate.

Definition at line 2282 of file SourceFile.cpp.

References active_class, active_extension, ClassDirective::checkDuplicateMethod(), ExtensionDirective::checkDuplicateMethod(), RexxDirectory::entry(), Error_Translation_missing_class, methods, OREF_NULL, and syntaxError().

Referenced by attributeDirective(), constantDirective(), and methodDirective().

◆ classDirective()

◆ cleanup()

◆ collectionMessage()

RexxObject * RexxSource::collectionMessage ( RexxToken token,
RexxObject target,
int  terminators 
)

◆ commandNew()

RexxInstruction * RexxSource::commandNew ( )

Definition at line 446 of file InstructionParser.cpp.

References expression(), new_instruction, and TERM_EOC.

Referenced by instruction().

◆ comment()

◆ commonString()

◆ condition()

int RexxSource::condition ( RexxToken token)
static

◆ constantDirective()

◆ constantExpression()

◆ constantLogicalExpression()

◆ createAbstractMethod()

void RexxSource::createAbstractMethod ( RexxString name,
bool  classMethod,
bool  privateMethod,
bool  protectedMethod,
bool  guardedMethod 
)

Create an abstract method.

Parameters
nameThe name of the method.
classMethodIndicates we're adding a class or instance method.
privateMethodThe method's private attribute.
protectedMethodThe method's protected attribute.
guardedMethodThe method's guarded attribute.

Definition at line 3356 of file SourceFile.cpp.

References addMethod(), and RexxMethod::setAttributes().

Referenced by attributeDirective().

◆ createAttributeGetterMethod()

void RexxSource::createAttributeGetterMethod ( RexxString name,
RexxVariableBase retriever,
bool  classMethod,
bool  privateMethod,
bool  protectedMethod,
bool  guardedMethod 
)

Create an ATTRIBUTE "get" method.

Parameters
nameThe name of the attribute.
retriever
classMethodIndicates we're adding a class or instance method.
privateMethodThe method's private attribute.
protectedMethodThe method's protected attribute.
guardedMethodThe method's guarded attribute.

Definition at line 3306 of file SourceFile.cpp.

References addMethod(), and RexxMethod::setAttributes().

Referenced by attributeDirective(), and methodDirective().

◆ createAttributeSetterMethod()

void RexxSource::createAttributeSetterMethod ( RexxString name,
RexxVariableBase retriever,
bool  classMethod,
bool  privateMethod,
bool  protectedMethod,
bool  guardedMethod 
)

Create an ATTRIBUTE "set" method.

Parameters
nameThe name of the attribute.
classMethodIndicates we're adding a class or instance method.
privateMethodThe method's private attribute.
protectedMethodThe method's protected attribute.
guardedMethodThe method's guarded attribute.

Definition at line 3331 of file SourceFile.cpp.

References addMethod(), and RexxMethod::setAttributes().

Referenced by attributeDirective(), and methodDirective().

◆ createConstantGetterMethod()

void RexxSource::createConstantGetterMethod ( RexxString name,
RexxObject value 
)

Create a CONSTANT "get" method.

Parameters
targetThe target method directory.
nameThe name of the attribute.

Definition at line 3375 of file SourceFile.cpp.

References active_class, active_extension, ClassDirective::addConstantMethod(), ExtensionDirective::addConstantMethod(), addMethod(), OREF_NULL, and RexxMethod::setUnguarded().

Referenced by constantDirective().

◆ createDoLoop() [1/2]

RexxInstruction * RexxSource::createDoLoop ( )

Create a DO instruction instance.

Returns

Definition at line 486 of file InstructionParser.cpp.

References new_instruction.

Referenced by doNew(), and loopNew().

◆ createDoLoop() [2/2]

◆ createLoop()

RexxInstruction * RexxSource::createLoop ( )

Create a LOOP instruction instance.

Returns

Definition at line 500 of file InstructionParser.cpp.

References new_instruction.

Referenced by loopNew().

◆ createMethod()

void RexxSource::createMethod ( RexxString name,
bool  classMethod,
bool  privateMethod,
bool  protectedMethod,
bool  guardedMethod 
)

Create a Rexx method body.

Parameters
nameThe name of the attribute.
classMethodIndicates whether we are creating a class or instance method.
privateMethodThe method's private attribute.
protectedMethodThe method's protected attribute.
guardedMethodThe method's guarded attribute.

Definition at line 3272 of file SourceFile.cpp.

References addMethod(), OREF_NULL, saveObject(), RexxMethod::setAttributes(), and translateBlock().

Referenced by attributeDirective().

◆ createNativeMethod()

RexxMethod * RexxSource::createNativeMethod ( RexxString name,
RexxString library,
RexxString procedure 
)

Create a native method from a specification.

Parameters
nameThe method name.
libraryThe library containing the method.
procedureThe name of the procedure within the package.
Returns
A method object representing this method.

Definition at line 2788 of file SourceFile.cpp.

References Error_External_name_not_found_method, OREF_NULL, PackageManager::resolveMethod(), RexxNativeCode::setSourceObject(), and syntaxError().

Referenced by attributeDirective(), and methodDirective().

◆ createStackFrame()

StackFrameClass * RexxSource::createStackFrame ( )

Create a stack frame for this parsing context.

Returns
a stack frame instance for error reporting

Definition at line 995 of file SourceFile.cpp.

References clauseLocation, FRAME_PARSE, SourceLocation::getLineNumber(), OREF_NULL, programName, and traceBack().

Referenced by ParseActivationFrame::createStackFrame().

◆ decodeExternalMethod()

void RexxSource::decodeExternalMethod ( RexxString methodName,
RexxString externalSpec,
RexxString *&  library,
RexxString *&  procedure 
)

Decode an external library method specification.

Parameters
methodNameThe internal name of the method (uppercased).
externalSpecThe external specification string.
libraryThe returned library name.
procedureThe returned package name.

Definition at line 2812 of file SourceFile.cpp.

References Error_Translation_bad_external, RexxArray::get(), OREF_NULL, RexxArray::size(), syntaxError(), and words().

Referenced by attributeDirective(), and methodDirective().

◆ directive()

◆ doNew()

RexxInstruction * RexxSource::doNew ( )

Definition at line 460 of file InstructionParser.cpp.

References createDoLoop().

Referenced by instruction().

◆ dropNew()

RexxInstruction * RexxSource::dropNew ( )

Definition at line 809 of file InstructionParser.cpp.

References KEYWORD_DROP, new_variable_instruction, processVariableList(), and subTerms.

Referenced by instruction().

◆ elseNew()

RexxInstruction * RexxSource::elseNew ( RexxToken token)

Definition at line 823 of file InstructionParser.cpp.

References new_instruction.

Referenced by instruction().

◆ endIfNew()

RexxInstruction * RexxSource::endIfNew ( RexxInstructionIf parent)

Definition at line 865 of file InstructionParser.cpp.

References new_instruction.

Referenced by flushControl().

◆ endLocation()

void RexxSource::endLocation ( SourceLocation location)

Definition at line 211 of file Scanner.cpp.

References line_number, line_offset, and SourceLocation::setEnd().

Referenced by nextSpecial(), sourceLiteral(), and sourceNextToken().

◆ endNew()

◆ error() [1/5]

void RexxSource::error ( int  errorcode,
SourceLocation location,
RexxArray subs 
)

◆ error() [2/5]

void RexxSource::error ( int  errorcode)

◆ error() [3/5]

void RexxSource::error ( int  errorcode,
RexxObject value 
)

◆ error() [4/5]

void RexxSource::error ( int  errorcode,
RexxObject value1,
RexxObject value2 
)

◆ error() [5/5]

void RexxSource::error ( int  errorcode,
RexxObject value1,
RexxObject value2,
RexxObject value3 
)

◆ errorCleanup()

void RexxSource::errorCleanup ( )

Definition at line 6161 of file SourceFile.cpp.

References cleanup().

Referenced by error(), errorLine(), errorPosition(), and errorToken().

◆ errorLine()

void RexxSource::errorLine ( int  errorcode,
RexxInstruction _instruction 
)

◆ errorPosition()

void RexxSource::errorPosition ( int  errorcode,
SourceLocation  token_location 
)

◆ errorToken()

◆ exitNew()

RexxInstruction * RexxSource::exitNew ( )

Definition at line 878 of file InstructionParser.cpp.

References expression(), new_instruction, and TERM_EOC.

Referenced by instruction().

◆ expose()

void RexxSource::expose ( RexxString name)

Definition at line 4664 of file SourceFile.cpp.

References exposed_variables, and RexxDirectory::put().

Referenced by processVariableList().

◆ exposeNew()

RexxInstruction * RexxSource::exposeNew ( )

◆ expression()

◆ extensionDirective()

◆ extract()

◆ extractNameInformation()

void RexxSource::extractNameInformation ( )

Extract various bits of the source name to give us directory, extension and file portions to be used for searches for additional files.

Definition at line 318 of file SourceFile.cpp.

References SysFileSystem::extractDirectory(), SysFileSystem::extractExtension(), SysFileSystem::extractFile(), OREF_NULL, OrefSet, programDirectory, programExtension, programFile, and programName.

Referenced by initBuffered(), and setProgramName().

◆ extractSource() [1/2]

RexxArray * RexxSource::extractSource ( )

Extract all of the source from the package.

Returns
An array of the source lines.

Definition at line 1138 of file SourceFile.cpp.

References SourceLocation::setEndLine(), SourceLocation::setLineNumber(), and SourceLocation::setOffset().

◆ extractSource() [2/2]

◆ findClass()

RexxClass * RexxSource::findClass ( RexxString className)

◆ findInstalledClass()

RexxClass * RexxSource::findInstalledClass ( RexxString name)

Resolve a directly defined class object in this or a parent context.

Parameters
nameThe name we're searching for (all uppercase).
Returns
A resolved class object, if found.

Definition at line 1640 of file SourceFile.cpp.

References RexxDirectory::fastAt(), findInstalledClass(), installed_classes, OREF_NULL, and parentSource.

Referenced by findClass(), and findInstalledClass().

◆ findLabel()

RexxInstruction * RexxSource::findLabel ( RexxString labelname)

Definition at line 4923 of file SourceFile.cpp.

References RexxDirectory::fastAt(), labels, and OREF_NULL.

◆ findLocalRoutine()

RoutineClass * RexxSource::findLocalRoutine ( RexxString name)

Resolve a directly defined class object in this or a parent context.

Parameters
nameThe name we're searching for (all uppercase).
Returns
A resolved class object, if found.

Definition at line 1536 of file SourceFile.cpp.

References RexxDirectory::fastAt(), findLocalRoutine(), OREF_NULL, parentSource, and routines.

Referenced by findLocalRoutine(), and findRoutine().

◆ findPublicClass()

RexxClass * RexxSource::findPublicClass ( RexxString name)

◆ findPublicRoutine()

RoutineClass * RexxSource::findPublicRoutine ( RexxString name)

Resolve a public routine in this source context

Parameters
nameThe target name.
Returns
A resolved Routine object, if found.

Definition at line 1566 of file SourceFile.cpp.

References RexxDirectory::fastAt(), findPublicRoutine(), merged_public_routines, OREF_NULL, and parentSource.

Referenced by findPublicRoutine(), and findRoutine().

◆ findRoutine()

RoutineClass * RexxSource::findRoutine ( RexxString routineName)

Resolve a routine from this source files base context.

Parameters
routineNameThe routine name of interest.
Returns
A RoutineClass instance if located. Returns OREF_NULL if this is not known at this level.

Definition at line 1598 of file SourceFile.cpp.

References findLocalRoutine(), findPublicRoutine(), OREF_NULL, and RexxString::upper().

Referenced by RexxCode::findRoutine(), and PackageClass::findRoutine().

◆ firstToken()

void RexxSource::firstToken ( )
inline

Definition at line 315 of file SourceFile.hpp.

References clause, and RexxClause::firstToken().

Referenced by checkDirective(), hasBody(), and instruction().

◆ flatten()

void RexxSource::flatten ( RexxEnvelope envelope)
virtual

◆ flushControl()

void RexxSource::flushControl ( RexxInstruction _instruction)

◆ formatTraceSetting()

RexxString * RexxSource::formatTraceSetting ( size_t  source)
static

Format an encoded trace setting back into human readable form.

Parameters
settingThe source setting.
Returns
The string representation of the trace setting.

Definition at line 6513 of file SourceFile.cpp.

References DEBUG_ON, new_string(), and TRACE_SETTING_MASK.

Referenced by getTrace(), and RexxActivation::traceSetting().

◆ forwardNew()

RexxInstruction * RexxSource::forwardNew ( )

Definition at line 1066 of file InstructionParser.cpp.

References new_instruction, and RexxInstructionForwardCreate().

Referenced by instruction().

◆ fullSubExpression()

RexxObject * RexxSource::fullSubExpression ( int  terminators)

Perform the parsing of an expression where the expression can be treated as a comma-separated list of subexpressions. If we have just a simple single subexpression, the return value is the parsed subexpression. If a comma is found as a terminator, then we turn this expression into an operator that will create an array object from the list of expressions. Omitted expressions are allowed and no effort is made to remove trailing null expressions.

Parameters
terminatorsThe list of terminators for this expression type.
Returns
Either a simple expression, or an expression object for creating an array item.

Definition at line 5125 of file SourceFile.cpp.

References RexxToken::isType(), nextToken(), popSubTerm(), previousToken(), pushSubTerm(), subExpression(), subTerms, TERM_COMMA, and TOKEN_COMMA.

Referenced by expression(), and subTerm().

◆ function()

RexxObject * RexxSource::function ( RexxToken token,
RexxToken name,
int  terminators 
)

◆ functionCallMessage()

RexxObject* RexxSource::functionCallMessage ( RexxToken ,
RexxObject ,
int   
)

Referenced by subTerm().

◆ generateCode()

RexxCode * RexxSource::generateCode ( bool  isMethod)

◆ get()

◆ getDefinedMethods()

RexxDirectory* RexxSource::getDefinedMethods ( )
inline

Definition at line 409 of file SourceFile.hpp.

References install(), and methods.

◆ getDigits()

size_t RexxSource::getDigits ( )
inline

◆ getEnableCommands()

bool RexxSource::getEnableCommands ( )
inline

Definition at line 417 of file SourceFile.hpp.

References enableCommands.

Referenced by RexxActivation::RexxActivation().

◆ getEnableMacrospace()

bool RexxSource::getEnableMacrospace ( )
inline

Definition at line 418 of file SourceFile.hpp.

References enableMacrospace.

Referenced by RexxActivation::RexxActivation().

◆ getForm()

bool RexxSource::getForm ( )
inline

Definition at line 412 of file SourceFile.hpp.

References form.

Referenced by PackageClass::form(), RexxActivation::RexxActivation(), and RexxActivation::setForm().

◆ getFuzz()

size_t RexxSource::getFuzz ( )
inline

Definition at line 413 of file SourceFile.hpp.

References fuzz.

Referenced by PackageClass::fuzz(), RexxActivation::RexxActivation(), and RexxActivation::setFuzz().

◆ getGuard()

RexxArray * RexxSource::getGuard ( )

Definition at line 4953 of file SourceFile.cpp.

References guard_variables, RexxHashTableCollection::makeArray(), OREF_NULL, and OrefSet.

Referenced by guardNew().

◆ getImportedClasses()

RexxDirectory* RexxSource::getImportedClasses ( )
inline

Definition at line 405 of file SourceFile.hpp.

References install(), and merged_public_classes.

Referenced by PackageClass::getImportedClasses().

◆ getImportedRoutines()

RexxDirectory* RexxSource::getImportedRoutines ( )
inline

Definition at line 408 of file SourceFile.hpp.

References install(), and merged_public_routines.

Referenced by PackageClass::getImportedRoutines().

◆ getInstalledClasses()

RexxDirectory* RexxSource::getInstalledClasses ( )
inline

Definition at line 403 of file SourceFile.hpp.

References install(), and installed_classes.

Referenced by PackageClass::getClasses().

◆ getInstalledPublicClasses()

RexxDirectory* RexxSource::getInstalledPublicClasses ( )
inline

Definition at line 404 of file SourceFile.hpp.

References install(), and installed_public_classes.

Referenced by PackageClass::getPublicClasses().

◆ getInstalledPublicRoutines()

RexxDirectory* RexxSource::getInstalledPublicRoutines ( )
inline

Definition at line 407 of file SourceFile.hpp.

References install(), and public_routines.

Referenced by PackageClass::getPublicRoutines().

◆ getInstalledRoutines()

RexxDirectory* RexxSource::getInstalledRoutines ( )
inline

Definition at line 406 of file SourceFile.hpp.

References install(), and routines.

Referenced by PackageClass::getRoutines().

◆ getIsBlock()

bool RexxSource::getIsBlock ( )
inline

Definition at line 145 of file SourceFile.hpp.

References isBlock.

◆ getLocalRoutines()

RexxDirectory* RexxSource::getLocalRoutines ( )
inline

Definition at line 381 of file SourceFile.hpp.

References routines.

Referenced by RexxCode::getLocalRoutines().

◆ getMethods()

RexxDirectory* RexxSource::getMethods ( )
inline

Definition at line 304 of file SourceFile.hpp.

References methods.

Referenced by PackageClass::getMethods(), and RexxCode::getMethods().

◆ getPackage()

PackageClass * RexxSource::getPackage ( )

Retrieve the package wrapper associated with this source.

Returns
The package instance that fronts for this source in Rexx code.

Definition at line 6862 of file SourceFile.cpp.

References OREF_NULL, OrefSet, and package.

Referenced by RexxActivity::generateProgramInformation(), and RexxActivity::reraiseException().

◆ getPackages()

RexxList* RexxSource::getPackages ( )
inline

Definition at line 410 of file SourceFile.hpp.

References install(), and loadedPackages.

Referenced by PackageClass::getImportedPackages().

◆ getProgramDirectory()

RexxString* RexxSource::getProgramDirectory ( )
inline

Definition at line 301 of file SourceFile.hpp.

References programDirectory.

◆ getProgramExtension()

RexxString* RexxSource::getProgramExtension ( )
inline

Definition at line 302 of file SourceFile.hpp.

References programExtension.

◆ getProgramFile()

RexxString* RexxSource::getProgramFile ( )
inline

Definition at line 303 of file SourceFile.hpp.

References programFile.

◆ getProgramName()

◆ getPublicRoutines()

RexxDirectory* RexxSource::getPublicRoutines ( )
inline

Definition at line 382 of file SourceFile.hpp.

References public_routines.

Referenced by RexxCode::getPublicRoutines().

◆ getRetriever()

◆ getRoutines()

RexxDirectory* RexxSource::getRoutines ( )
inline

Definition at line 305 of file SourceFile.hpp.

References routines.

Referenced by RexxCode::getRoutines().

◆ getSecurityManager()

◆ getToken()

RexxToken * RexxSource::getToken ( int  terminators,
int  errorcode 
)

Definition at line 5633 of file SourceFile.cpp.

References nextToken(), OREF_NULL, syntaxError(), and terminator().

Referenced by message().

◆ getTrace()

RexxString* RexxSource::getTrace ( )
inline

Definition at line 416 of file SourceFile.hpp.

References formatTraceSetting(), and traceSetting.

Referenced by PackageClass::trace().

◆ getTraceFlags()

size_t RexxSource::getTraceFlags ( )
inline

Definition at line 415 of file SourceFile.hpp.

References traceFlags.

Referenced by RexxActivation::RexxActivation().

◆ getTraceSetting()

size_t RexxSource::getTraceSetting ( )
inline

Definition at line 414 of file SourceFile.hpp.

References traceSetting.

Referenced by RexxActivation::RexxActivation().

◆ globalSetup()

◆ guardNew()

◆ hasBody()

bool RexxSource::hasBody ( )

Test if a directive is followed by a body of Rexx code instead of another directive or the end of the source.

Returns
True if there is a non-directive clause following the current clause.

Definition at line 1362 of file SourceFile.cpp.

References RexxToken::classId, clause, dumpClause, firstToken(), flags, nextClause(), nextReal(), no_clause, reclaimClause(), and TOKEN_DCOLON.

Referenced by attributeDirective().

◆ holdObject()

◆ ifNew()

◆ inheritSourceContext()

void RexxSource::inheritSourceContext ( RexxSource source)

Merge a parent source context into our context so all of the bits that are visible in the parent are also resolvable in our context. This is mostly used for dynamically created methods.

Parameters
parentThe parent source context.

Definition at line 1440 of file SourceFile.cpp.

References OrefSet, and parentSource.

Referenced by RexxMethod::newMethodObject(), and RoutineClass::newRoutineObject().

◆ initBuffered()

◆ initFile()

◆ install() [1/2]

◆ install() [2/2]

void RexxSource::install ( RexxActivation activation)
inline

Definition at line 294 of file SourceFile.hpp.

References needsInstallation(), and processInstall().

◆ instruction()

RexxInstruction * RexxSource::instruction ( )

Definition at line 4133 of file SourceFile.cpp.

References _interpret, addressNew(), assignmentNew(), assignmentOpNew(), callNew(), RexxToken::classId, commandNew(), doNew(), dropNew(), elseNew(), endNew(), Error_Invalid_expression_general, Error_Translation_expose_interpret, Error_Translation_forward_interpret, Error_Translation_guard_interpret, Error_Translation_reply_interpret, Error_Translation_use_interpret, Error_Unexpected_label_interpret, Error_Unexpected_then_then, exitNew(), exposeNew(), firstToken(), flags, forwardNew(), guardNew(), ifNew(), interpretNew(), IS_KEYWORD, RexxToken::isEndOfClause(), RexxToken::isSymbol(), KEYWORD_ADDRESS, KEYWORD_ARG, KEYWORD_CALL, KEYWORD_DO, KEYWORD_DROP, KEYWORD_ELSE, KEYWORD_END, KEYWORD_EXIT, KEYWORD_EXPOSE, KEYWORD_FORWARD, KEYWORD_GUARD, KEYWORD_IF, KEYWORD_INTERPRET, KEYWORD_ITERATE, KEYWORD_LEAVE, KEYWORD_LOOP, KEYWORD_NOP, KEYWORD_NUMERIC, KEYWORD_OPTIONS, KEYWORD_OTHERWISE, KEYWORD_PARSE, KEYWORD_PROCEDURE, KEYWORD_PULL, KEYWORD_PUSH, KEYWORD_QUEUE, KEYWORD_RAISE, KEYWORD_REPLY, KEYWORD_RETURN, KEYWORD_SAY, KEYWORD_SELECT, KEYWORD_SIGNAL, KEYWORD_THEN, KEYWORD_TRACE, KEYWORD_UPPER, KEYWORD_USE, KEYWORD_WHEN, labelNew(), leaveNew(), loopNew(), markPosition(), messageAssignmentNew(), messageAssignmentOpNew(), messageNew(), messageTerm(), nextReal(), nextToken(), nopNew(), numericNew(), OPERATOR_EQUAL, OPERATOR_STRICT_EQUAL, optionsNew(), OREF_NULL, otherwiseNew(), parseNew(), previousToken(), procedureNew(), QUEUE_FIFO, QUEUE_LIFO, queueNew(), raiseNew(), reclaimClause(), refineSubclass, replyNew(), resetPosition(), returnNew(), saveObject(), sayNew(), selectNew(), signalNew(), RexxToken::subclass, subExpression(), SUBKEY_ARG, SUBKEY_PULL, syntaxError(), TERM_EOC, TOKEN_ASSIGNMENT, TOKEN_COLON, TOKEN_DCOLON, TOKEN_LEFT, TOKEN_LITERAL, TOKEN_SOURCE_LITERAL, TOKEN_SYMBOL, toss(), traceNew(), trimClause(), upperNew(), and useNew().

Referenced by translateBlock().

◆ instructionNew()

RexxInstruction * RexxSource::instructionNew ( int  type)

◆ interpret()

RexxCode * RexxSource::interpret ( RexxString string,
RexxDirectory _labels,
size_t  _line_number,
RexxActivation activation 
)

Definition at line 1307 of file SourceFile.cpp.

References adjustLine(), interpretMethod(), new_array(), programName, and RexxSource().

Referenced by RexxCode::interpret().

◆ interpretLine()

void RexxSource::interpretLine ( size_t  )

◆ interpretMethod()

RexxCode * RexxSource::interpretMethod ( RexxDirectory _labels,
RexxActivation _activation 
)

Definition at line 1291 of file SourceFile.cpp.

References _interpret, cleanup(), flags, globalSetup(), interpret_activation, OrefSet, and translate().

Referenced by interpret().

◆ interpretNew()

RexxInstruction * RexxSource::interpretNew ( )

◆ isExposeValid()

void RexxSource::isExposeValid ( )

◆ isInternalCode()

bool RexxSource::isInternalCode ( )
inline

Definition at line 328 of file SourceFile.hpp.

References RexxInternalObject::isOldSpace().

Referenced by traceBack().

◆ isInterpret()

bool RexxSource::isInterpret ( )
inline

Definition at line 291 of file SourceFile.hpp.

References _interpret, and flags.

Referenced by RexxCode::isInterpret().

◆ isSymbolCharacter()

static bool RexxSource::isSymbolCharacter ( codepoint_t  ch)
inlinestatic

◆ isTraceable()

bool RexxSource::isTraceable ( )

Definition at line 801 of file SourceFile.cpp.

References OREF_NULL, reconnect(), sourceArray, and sourceBuffer.

Referenced by RexxCode::isTraceable().

◆ keyDirective()

int RexxSource::keyDirective ( RexxToken token)
static

Definition at line 559 of file KeywordConstants.cpp.

References directives, RexxToken::isSymbol(), resolveKeyword(), tabSize, and RexxToken::value.

Referenced by directive().

◆ keyword()

int RexxSource::keyword ( RexxToken token)
static

◆ labelNew()

◆ leaveNew()

◆ libraryDirective()

void RexxSource::libraryDirective ( RexxString name,
RexxToken token 
)

◆ live()

◆ liveGeneral()

◆ loadRequires() [1/2]

PackageClass * RexxSource::loadRequires ( RexxActivity activity,
RexxString target 
)

Load a ::REQUIRES directive when the source file is first invoked.

Parameters
targetThe name of the ::REQUIRES
instructionThe directive instruction being processed.

Definition at line 6778 of file SourceFile.cpp.

References addPackage(), Error_Routine_not_found_requires, RexxActivity::getInstance(), InterpreterInstance::loadRequires(), OREF_NULL, reportException(), and resolveProgramName().

Referenced by PackageClass::loadPackage(), and RexxActivation::loadRequires().

◆ loadRequires() [2/2]

PackageClass * RexxSource::loadRequires ( RexxActivity activity,
RexxString target,
RexxArray s 
)

Load a ::REQUIRES directive from an provided source target

Parameters
targetThe name of the ::REQUIRES

Definition at line 6807 of file SourceFile.cpp.

References addPackage(), Error_Routine_not_found_requires, RexxActivity::getInstance(), InterpreterInstance::loadRequires(), OREF_NULL, and reportException().

◆ locateToken()

◆ loopNew()

RexxInstruction * RexxSource::loopNew ( )

Definition at line 470 of file InstructionParser.cpp.

References createDoLoop(), and createLoop().

Referenced by instruction().

◆ markPosition()

size_t RexxSource::markPosition ( )
inline

Definition at line 317 of file SourceFile.hpp.

References clause, and RexxClause::mark().

Referenced by argList(), createDoLoop(), instruction(), and messageTerm().

◆ mergeRequired()

◆ message()

◆ messageAssignmentNew()

◆ messageAssignmentOpNew()

RexxInstruction * RexxSource::messageAssignmentOpNew ( RexxExpressionMessage _message,
RexxToken operation,
RexxObject _expression 
)

Create a message term pseudo assignment instruction for a shortcut operator. The instruction is of the form "messageTerm (op)= expr".

Parameters
messageThe target message term.
operationThe operation to perform in the expansion.
expressionThe expression (which is the right-hand term of the eventual expression).
Returns
The constructed message operator.

Definition at line 1330 of file InstructionParser.cpp.

References RexxExpressionMessage::argumentCount, RexxInternalObject::copy(), RexxExpressionMessage::makeAssignment(), RexxExpressionMessage::namedArgumentCount, new_variable_instruction, and RexxToken::subclass.

Referenced by instruction().

◆ messageNew()

◆ messageSubterm()

◆ messageTerm()

◆ methodDirective()

◆ needsInstallation()

bool RexxSource::needsInstallation ( )
inline

Definition at line 293 of file SourceFile.hpp.

References _install, and flags.

Referenced by install().

◆ needVariable()

◆ needVariableOrDotSymbol()

void RexxSource::needVariableOrDotSymbol ( RexxToken token)

◆ nextClause()

◆ nextLine()

void RexxSource::nextLine ( )

Definition at line 504 of file SourceFile.cpp.

References clause, line_number, line_offset, position(), and RexxClause::setEnd().

Referenced by comment(), locateToken(), and sourceNextToken().

◆ nextReal()

◆ nextSpecial()

bool RexxSource::nextSpecial ( unsigned int  target,
SourceLocation location 
)

◆ nextToken()

◆ nopNew()

RexxInstruction * RexxSource::nopNew ( )

◆ numericNew()

◆ operator delete() [1/2]

void RexxSource::operator delete ( void *  )
inline

Definition at line 137 of file SourceFile.hpp.

◆ operator delete() [2/2]

void RexxSource::operator delete ( void *  ,
void *   
)
inline

Definition at line 138 of file SourceFile.hpp.

◆ operator new() [1/2]

void* RexxSource::operator new ( size_t  size,
void *  ptr 
)
inline

Definition at line 136 of file SourceFile.hpp.

◆ operator new() [2/2]

void * RexxSource::operator new ( size_t  size)

Definition at line 6371 of file SourceFile.cpp.

References new_object(), and T_RexxSource.

◆ optionsDirective()

◆ optionsNew()

RexxInstruction * RexxSource::optionsNew ( )

◆ otherwiseNew()

RexxInstruction * RexxSource::otherwiseNew ( RexxToken token)

Definition at line 1511 of file InstructionParser.cpp.

References new_instruction.

Referenced by instruction().

◆ packLiteral()

◆ parenExpression()

RexxObject * RexxSource::parenExpression ( RexxToken start)

◆ parseConditional()

◆ parseLogical()

RexxObject * RexxSource::parseLogical ( RexxToken _first,
int  terminators 
)

Parse off a "logical list expression", consisting of a list of conditionals separated by commas.

Parameters
terminatorsThe set of terminators for this logical context.
Returns
OREF_NULL if no expressions is found, a single expression element if a single expression is located, and a complex logical expression operator for a list of expressions.

Definition at line 6746 of file SourceFile.cpp.

References argList(), OREF_NULL, RexxQueue::pop(), previousToken(), and subTerms.

Referenced by constantLogicalExpression(), ifNew(), and parseConditional().

◆ parseNew()

◆ parseOption()

int RexxSource::parseOption ( RexxToken token)
static

Definition at line 545 of file KeywordConstants.cpp.

References RexxToken::isSymbol(), parseOptions, resolveKeyword(), tabSize, and RexxToken::value.

Referenced by parseNew().

◆ parseTraceSetting()

bool RexxSource::parseTraceSetting ( RexxString value,
size_t &  newSetting,
size_t &  debugFlags,
char &  badOption 
)
static

Parse a trace setting value into a decoded setting and the RexxActivation debug flag set to allow new trace settings to be processed more quickly.

Parameters
valueThe string source of the trace setting.
newSettingThe returned setting in binary form.
debugFlagsThe debug flag representation of the trace setting.

Definition at line 6407 of file SourceFile.cpp.

References DEBUG_IGNORE, DEBUG_OFF, DEBUG_TOGGLE, RexxString::getBLength(), RexxString::getCharB(), RexxActivation::processTraceSetting(), TRACE_ALL, TRACE_COMMANDS, TRACE_ERRORS, TRACE_FAILURES, TRACE_IGNORE, TRACE_INTERMEDIATES, TRACE_LABELS, TRACE_NORMAL, TRACE_OFF, and TRACE_RESULTS.

Referenced by optionsDirective(), RexxActivation::setTrace(), and traceNew().

◆ popDo()

RexxInstruction* RexxSource::popDo ( )
inline

Definition at line 297 of file SourceFile.hpp.

References control, and RexxQueue::pullRexx().

Referenced by flushControl(), and translateBlock().

◆ popNTerms()

RexxObject * RexxSource::popNTerms ( size_t  count)

Definition at line 6085 of file SourceFile.cpp.

References currentstack, holdObject(), OREF_NULL, RexxQueue::pop(), and terms.

Referenced by argList().

◆ popOperator()

RexxToken* RexxSource::popOperator ( )
inline

Definition at line 307 of file SourceFile.hpp.

References operators, and RexxQueue::pullRexx().

Referenced by subExpression().

◆ popSubTerm()

RexxObject * RexxSource::popSubTerm ( )

Pop a term off of the expression sub term stack.

Returns
The popped object.

Definition at line 6073 of file SourceFile.cpp.

References currentstack, holdObject(), RexxQueue::pop(), and subTerms.

Referenced by fullSubExpression().

◆ popTerm()

RexxObject * RexxSource::popTerm ( )

Definition at line 6033 of file SourceFile.cpp.

References currentstack, holdObject(), RexxQueue::pop(), and terms.

Referenced by message(), and subExpression().

◆ position()

◆ precedence()

◆ previousToken()

◆ procedureNew()

◆ processInstall()

◆ processVariableList()

◆ pushDo()

void RexxSource::pushDo ( RexxInstruction i)
inline

Definition at line 296 of file SourceFile.hpp.

References control, and RexxQueue::pushRexx().

Referenced by flushControl(), and translateBlock().

◆ pushOperator()

void RexxSource::pushOperator ( RexxToken operatorToken)
inline

Definition at line 306 of file SourceFile.hpp.

References operators, and RexxQueue::pushRexx().

Referenced by subExpression().

◆ pushSubTerm()

void RexxSource::pushSubTerm ( RexxObject term)

Push a term on to the expression sub term stack. The subterms normally contribute to the total required stack size, so make sure we account for these when calculating the total required stack size. Only use this method of pushing the term when the max stack size is affected.

Parameters
termThe term object.

Definition at line 6055 of file SourceFile.cpp.

References currentstack, maxstack, RexxQueue::push(), and subTerms.

Referenced by fullSubExpression().

◆ pushTerm()

void RexxSource::pushTerm ( RexxObject term)

Definition at line 6017 of file SourceFile.cpp.

References currentstack, maxstack, RexxQueue::push(), and terms.

Referenced by argList(), message(), and subExpression().

◆ queueNew()

RexxInstruction * RexxSource::queueNew ( int  type)

Definition at line 1860 of file InstructionParser.cpp.

References expression(), new_instruction, TERM_EOC, and type.

Referenced by instruction().

◆ raiseNew()

◆ reclaimClause()

void RexxSource::reclaimClause ( )
inline

Definition at line 309 of file SourceFile.hpp.

References flags, and reclaimed.

Referenced by checkDirective(), hasBody(), and instruction().

◆ reconnect()

bool RexxSource::reconnect ( )

Definition at line 344 of file SourceFile.cpp.

References flags, initFile(), and reclaim_possible.

Referenced by extract(), extractSource(), isTraceable(), and sourceSize().

◆ removeObj()

void RexxSource::removeObj ( RexxObject object)
inline

Definition at line 377 of file SourceFile.hpp.

References OREF_NULL, RexxIdentityTable::remove(), and savelist.

Referenced by collectionMessage(), function(), message(), and useNew().

◆ replyNew()

RexxInstruction * RexxSource::replyNew ( )

Definition at line 2069 of file InstructionParser.cpp.

References expression(), new_instruction, and TERM_EOC.

Referenced by instruction().

◆ requiresDirective()

void RexxSource::requiresDirective ( )

◆ resetPosition()

void RexxSource::resetPosition ( size_t  p)
inline

Definition at line 318 of file SourceFile.hpp.

References clause, and RexxClause::reset().

Referenced by argList(), createDoLoop(), instruction(), and messageTerm().

◆ resolveBuiltin()

size_t RexxSource::resolveBuiltin ( RexxString value)
static

Definition at line 521 of file KeywordConstants.cpp.

References builtinFunctions, resolveKeyword(), and tabSize.

Referenced by RexxInstructionCall::execute().

◆ resolveDependencies()

◆ resolveKeyword()

int RexxSource::resolveKeyword ( RexxString token,
KeywordEntry Table,
int  Table_Size 
)
static

Resolve a token to a potential subkeyword.

Parameters
tokenThe token to resolve.
TableThe table to search.
Table_SizeThe size of the table.
Returns
The numeric identifier for the constant. Returns 0 if not found in the target table.

Definition at line 418 of file KeywordConstants.cpp.

References RexxString::getBLength(), RexxString::getStringData(), KeywordEntry::keyword_code, and Numerics::minVal().

Referenced by builtin(), condition(), keyDirective(), keyword(), parseOption(), resolveBuiltin(), subDirective(), and subKeyword().

◆ resolveProgramName()

RexxString * RexxSource::resolveProgramName ( RexxActivity activity,
RexxString name 
)

Resolve an external call in the context of the program making the call. This will use the directory and extension of the context program to modify the search order.

Parameters
activityThe current activity
nameThe target name
Returns
The fully resolved string name of the target program, if one is located.

Definition at line 1626 of file SourceFile.cpp.

References RexxActivity::getInstance(), programDirectory, programExtension, and InterpreterInstance::resolveProgramName().

Referenced by loadRequires(), and RexxCode::resolveProgramName().

◆ returnNew()

RexxInstruction * RexxSource::returnNew ( )

Definition at line 2082 of file InstructionParser.cpp.

References expression(), new_instruction, and TERM_EOC.

Referenced by instruction().

◆ RexxInstructionForwardCreate()

◆ routineDirective()

◆ saveObject()

void RexxSource::saveObject ( RexxObject object)
inline

◆ sayNew()

RexxInstruction * RexxSource::sayNew ( )

Definition at line 2096 of file InstructionParser.cpp.

References expression(), new_instruction, and TERM_EOC.

Referenced by instruction().

◆ selectNew()

◆ setBufferedSource()

void RexxSource::setBufferedSource ( RexxBuffer newSource)
inline

Definition at line 151 of file SourceFile.hpp.

References initBuffered().

Referenced by RoutineClass::processInstore().

◆ setGuard()

void RexxSource::setGuard ( )

Definition at line 4940 of file SourceFile.cpp.

References guard_variables, new_identity_table(), OREF_NULL, and OrefSet.

Referenced by guardNew().

◆ setIsBlock()

void RexxSource::setIsBlock ( bool  b)
inline

Definition at line 144 of file SourceFile.hpp.

References isBlock.

Referenced by RexxMethod::newMethodObject(), and RoutineClass::newRoutineObject().

◆ setLocalRoutines()

void RexxSource::setLocalRoutines ( RexxDirectory r)
inline

Definition at line 383 of file SourceFile.hpp.

References routines.

Referenced by RexxActivation::addLocalRoutine(), and RexxCode::setLocalRoutines().

◆ setProgramName()

void RexxSource::setProgramName ( RexxString name)

Set a program name for this source object. Usually used after a program restore to update the restored routine object. This will also update the extension and directory information.

Parameters
nameThe new program name.

Definition at line 338 of file SourceFile.cpp.

References extractNameInformation(), OrefSet, and programName.

Referenced by RoutineClass::restore(), and RexxSource().

◆ setPublicRoutines()

void RexxSource::setPublicRoutines ( RexxDirectory r)
inline

Definition at line 384 of file SourceFile.hpp.

References public_routines.

Referenced by RexxCode::setPublicRoutines().

◆ setReconnect()

void RexxSource::setReconnect ( )

Definition at line 357 of file SourceFile.cpp.

References flags, and reclaim_possible.

◆ setSecurityManager()

void RexxSource::setSecurityManager ( RexxObject manager)
inline

Definition at line 378 of file SourceFile.hpp.

References OrefSet, and securityManager.

Referenced by PackageClass::setSecurityManager(), and RexxCode::setSecurityManager().

◆ signalNew()

◆ sourceLiteral()

◆ sourceNewObject()

RexxInstruction * RexxSource::sourceNewObject ( size_t  size,
RexxBehaviour _behaviour,
int  type 
)

◆ sourceNextToken()

RexxToken * RexxSource::sourceNextToken ( RexxToken previous)

Definition at line 672 of file Scanner.cpp.

References AFTER_INTEGER, AFTER_NUMBER, RexxClause::cachedToken, CHECK_ASSIGNMENT, clause, CLAUSEEND_EOF, CLAUSEEND_EOL, CLAUSEEND_SEMICOLON, clauseLocation, commonString(), current, current_length, Numerics::DEFAULT_DIGITS, endLocation(), Error_Invalid_character_char, Error_Name_too_long_name, Error_Unexpected_curly_bracket, Error_Unmatched_quote_double, Error_Unmatched_quote_single, EXP_DIGIT, EXP_E, EXP_EDIGIT, EXP_ESIGN, EXP_EXCLUDED, EXP_POINT, EXP_SPOINT, EXP_START, RexxClause::free, GETCHAR, RexxString::getCharB(), RexxClause::getLocation(), HIGHEST_PRECEDENCE, INTEGER_CONSTANT, isSymbolCharacter(), line_number, line_offset, LITERAL_BIN, LITERAL_HEX, locateToken(), MAX_SYMBOL_LENGTH, MORELINE, new_string(), RexxClause::newToken(), nextLine(), nextSpecial(), OPERATOR, OPERATOR_ABUTTAL, OPERATOR_BLANK, OREF_NULL, packLiteral(), RexxToken::precedence, RexxString::putCharB(), raw_string(), RexxClause::setEnd(), SourceLocation::setEndOffset(), SourceLocation::setLocation(), RexxToken::setNumeric(), RexxString::setUpperOnly(), size_v, sourceLiteral(), startLocation(), SYMBOL_COMPOUND, SYMBOL_CONSTANT, SYMBOL_DOTSYMBOL, SYMBOL_DUMMY, SYMBOL_STEM, SYMBOL_VARIABLE, syntaxError(), TOKEN_BLANK, TOKEN_COLON, TOKEN_COMMA, TOKEN_DCOLON, TOKEN_DTILDE, TOKEN_EOC, TOKEN_LEFT, TOKEN_LITERAL, TOKEN_OPERATOR, TOKEN_RIGHT, TOKEN_SQLEFT, TOKEN_SQRIGHT, TOKEN_SYMBOL, TOKEN_TILDE, translateChar(), and type.

Referenced by nextClause(), and sourceLiteral().

◆ sourceSize()

size_t RexxSource::sourceSize ( )

Definition at line 783 of file SourceFile.cpp.

References line_count, OREF_NULL, reconnect(), sourceArray, and sourceBuffer.

Referenced by BUILTIN(), and PackageClass::getSourceSize().

◆ startLocation()

void RexxSource::startLocation ( SourceLocation location)

Definition at line 201 of file Scanner.cpp.

References line_number, line_offset, and SourceLocation::setStart().

Referenced by sourceNextToken().

◆ subDirective()

◆ subExpression()

◆ subKeyword()

◆ subTerm()

◆ syntaxError() [1/6]

void RexxSource::syntaxError ( int  errorcode)
inline

Definition at line 327 of file SourceFile.hpp.

References error().

◆ syntaxError() [2/6]

◆ syntaxError() [3/6]

void RexxSource::syntaxError ( int  errorcode,
RexxObject a1 
)
inline

Definition at line 323 of file SourceFile.hpp.

References error().

◆ syntaxError() [4/6]

void RexxSource::syntaxError ( int  errorcode,
RexxObject a1,
RexxObject a2 
)
inline

Definition at line 324 of file SourceFile.hpp.

References error().

◆ syntaxError() [5/6]

void RexxSource::syntaxError ( int  errorcode,
RexxObject a1,
RexxObject a2,
RexxObject a3 
)
inline

Definition at line 325 of file SourceFile.hpp.

References error().

◆ syntaxError() [6/6]

void RexxSource::syntaxError ( int  errorcode,
RexxToken token 
)
inline

Definition at line 326 of file SourceFile.hpp.

References errorToken().

◆ syntaxErrorAt() [1/2]

void RexxSource::syntaxErrorAt ( int  errorcode,
RexxToken token 
)
inline

◆ syntaxErrorAt() [2/2]

void RexxSource::syntaxErrorAt ( int  errorcode,
SourceLocation  token_location 
)
inline

Definition at line 322 of file SourceFile.hpp.

References errorPosition().

◆ terminator() [1/2]

bool RexxSource::terminator ( int  ,
RexxObject  
)

◆ terminator() [2/2]

◆ thenNew()

RexxInstruction * RexxSource::thenNew ( RexxToken token,
RexxInstructionIf parent 
)

Definition at line 2366 of file InstructionParser.cpp.

References new_instruction.

Referenced by translateBlock().

◆ topDo()

RexxInstruction* RexxSource::topDo ( )
inline

Definition at line 298 of file SourceFile.hpp.

References control, and RexxQueue::peek().

Referenced by flushControl(), and translateBlock().

◆ topOperator()

RexxToken* RexxSource::topOperator ( )
inline

Definition at line 308 of file SourceFile.hpp.

References operators, and RexxQueue::peek().

Referenced by subExpression().

◆ toss()

RexxObject * RexxSource::toss ( RexxObject object)

◆ traceBack()

RexxString * RexxSource::traceBack ( RexxActivation activation,
SourceLocation location,
size_t  indent,
bool  trace 
)

Format a source line for tracing

Parameters
activationThe activation of the current running code. This can be null if this is a translation time error.
locationThe source line location.
indentThe indentation amount to apply to the trace line
traceThis is a traced line vs. an error line
Returns
A formatted trace line, including headers and indentations.

Definition at line 1018 of file SourceFile.cpp.

References RexxActivity::buildMessage(), ActivityManager::currentActivity, extract(), RexxActivation::formatSourcelessTraceLine(), SourceLocation::getLineNumber(), INDENT_SPACING, INSTRUCTION_OVERHEAD, isInternalCode(), RexxInternalObject::isOldSpace(), line, LINENUMBER, Message_Translations_internal_code, Message_Translations_no_source_available, new_array(), OREF_NULL, PREFIX_LENGTH, PREFIX_OFFSET, programName, RexxString::put(), raw_string(), and RexxString::set().

Referenced by createStackFrame(), and RexxActivation::formatTrace().

◆ traceNew()

◆ translate()

◆ translateBlock()

◆ translateChar()

static int RexxSource::translateChar ( codepoint_t  ch)
inlinestatic

◆ trimClause()

void RexxSource::trimClause ( )
inline

Definition at line 316 of file SourceFile.hpp.

References clause, and RexxClause::trim().

Referenced by instruction(), and translateBlock().

◆ upperNew()

RexxInstruction * RexxSource::upperNew ( )

Definition at line 2501 of file InstructionParser.cpp.

References KEYWORD_UPPER, new_variable_instruction, processVariableList(), and subTerms.

Referenced by instruction().

◆ useNew()

◆ variableOrMessageTerm()

RexxObject * RexxSource::variableOrMessageTerm ( )

Parse off a single variable symbol or a message term that can be used for an assignment.

NOTE: If this is a message term, then the message term will be configured as an assignment term.

Returns
The object for an assignment target, or OREF_NULL if something other than a variable or a message term was found. On return, the clause position pointer will either be unchanged or positioned at the next token of the clause.

Definition at line 5759 of file SourceFile.cpp.

References addText(), RexxToken::isSymbol(), messageTerm(), needVariable(), nextReal(), OREF_NULL, and previousToken().

Referenced by parseNew(), and useNew().

◆ words()

Friends And Related Function Documentation

◆ RexxActivation

friend class RexxActivation
friend

Definition at line 133 of file SourceFile.hpp.

Member Data Documentation

◆ active_class

◆ active_extension

◆ builtinFunctions

KeywordEntry RexxSource::builtinFunctions
staticprotected

Definition at line 540 of file SourceFile.hpp.

Referenced by builtin(), and resolveBuiltin().

◆ builtinTable

pbuiltin RexxSource::builtinTable
static

◆ calls

RexxList* RexxSource::calls
protected

Definition at line 529 of file SourceFile.hpp.

Referenced by addReference(), cleanup(), live(), liveGeneral(), and translateBlock().

◆ characterTable

int RexxSource::characterTable
staticprotected

Definition at line 546 of file SourceFile.hpp.

Referenced by isSymbolCharacter(), and translateChar().

◆ class_dependencies

RexxDirectory* RexxSource::class_dependencies
protected

◆ classes

RexxList* RexxSource::classes
protected

◆ clause

◆ clauseLocation

◆ conditionKeywords

KeywordEntry RexxSource::conditionKeywords
staticprotected
Initial value:
= {
}
#define CONDITION_NOSTRING
Definition: Token.hpp:309
#define CONDITION_LOSTDIGITS
Definition: Token.hpp:315
#define CONDITION_SYNTAX
Definition: Token.hpp:313
#define CONDITION_USER
Definition: Token.hpp:314
#define CONDITION_ANY
Definition: Token.hpp:304
#define CONDITION_PROPAGATE
Definition: Token.hpp:312
#define CONDITION_NOMETHOD
Definition: Token.hpp:308
#define CONDITION_NOVALUE
Definition: Token.hpp:311
#define CONDITION_ERROR
Definition: Token.hpp:305
#define CONDITION_FAILURE
Definition: Token.hpp:306
#define CONDITION_NOTREADY
Definition: Token.hpp:310
#define CONDITION_HALT
Definition: Token.hpp:307
Definition: SourceFile.hpp:118

Definition at line 541 of file SourceFile.hpp.

Referenced by condition().

◆ control

RexxQueue* RexxSource::control
protected

Definition at line 511 of file SourceFile.hpp.

Referenced by cleanup(), globalSetup(), live(), liveGeneral(), popDo(), pushDo(), and topDo().

◆ current

const char* RexxSource::current
protected

Definition at line 460 of file SourceFile.hpp.

Referenced by locateToken(), packLiteral(), position(), and sourceNextToken().

◆ current_length

sizeB_t RexxSource::current_length
protected

Definition at line 465 of file SourceFile.hpp.

Referenced by comment(), locateToken(), position(), and sourceNextToken().

◆ currentInstruction

RexxInstruction* RexxSource::currentInstruction
protected

Definition at line 524 of file SourceFile.hpp.

Referenced by cleanup(), live(), liveGeneral(), and sourceNewObject().

◆ currentstack

size_t RexxSource::currentstack
protected

◆ DEBUG_IGNORE

const size_t RexxSource::DEBUG_IGNORE = 0x0000
static

Definition at line 442 of file SourceFile.hpp.

Referenced by parseTraceSetting(), and RexxActivation::processTraceSetting().

◆ DEBUG_NOTRACE

const size_t RexxSource::DEBUG_NOTRACE = 0x0800
static

Definition at line 446 of file SourceFile.hpp.

Referenced by traceNew().

◆ DEBUG_OFF

const size_t RexxSource::DEBUG_OFF = 0x0200
static

Definition at line 444 of file SourceFile.hpp.

Referenced by parseTraceSetting(), and RexxActivation::processTraceSetting().

◆ DEBUG_ON

const size_t RexxSource::DEBUG_ON = 0x0100
static

◆ DEBUG_TOGGLE

const size_t RexxSource::DEBUG_TOGGLE = 0x0400
static

◆ DEFAULT_TRACE_SETTING

const size_t RexxSource::DEFAULT_TRACE_SETTING = TRACE_NORMAL
static

Definition at line 433 of file SourceFile.hpp.

Referenced by translate().

◆ digits

size_t RexxSource::digits
protected

Definition at line 492 of file SourceFile.hpp.

Referenced by getDigits(), optionsDirective(), and translate().

◆ directives

KeywordEntry RexxSource::directives
staticprotected
Initial value:
= {
}
#define DIRECTIVE_CLASS
Definition: Token.hpp:266
#define DIRECTIVE_METHOD
Definition: Token.hpp:267
#define DIRECTIVE_EXTENSION
Definition: Token.hpp:272
#define DIRECTIVE_REQUIRES
Definition: Token.hpp:265
#define DIRECTIVE_ROUTINE
Definition: Token.hpp:268
#define DIRECTIVE_ATTRIBUTE
Definition: Token.hpp:269
#define DIRECTIVE_OPTIONS
Definition: Token.hpp:271
#define DIRECTIVE_CONSTANT
Definition: Token.hpp:270

Definition at line 537 of file SourceFile.hpp.

Referenced by keyDirective().

◆ enableCommands

bool RexxSource::enableCommands
protected

Definition at line 497 of file SourceFile.hpp.

Referenced by getEnableCommands(), optionsDirective(), and translate().

◆ enableMacrospace

bool RexxSource::enableMacrospace
protected

Definition at line 498 of file SourceFile.hpp.

Referenced by getEnableMacrospace(), optionsDirective(), and translate().

◆ exposed_variables

RexxDirectory* RexxSource::exposed_variables
protected

Definition at line 528 of file SourceFile.hpp.

Referenced by addStem(), addVariable(), cleanup(), expose(), live(), liveGeneral(), and translateBlock().

◆ extensions

RexxList* RexxSource::extensions
protected

Definition at line 483 of file SourceFile.hpp.

Referenced by extensionDirective(), live(), liveGeneral(), processInstall(), and translate().

◆ first

RexxInstruction* RexxSource::first
protected

Definition at line 522 of file SourceFile.hpp.

Referenced by addClause(), cleanup(), live(), liveGeneral(), and translateBlock().

◆ flags

◆ form

bool RexxSource::form
protected

Definition at line 494 of file SourceFile.hpp.

Referenced by getForm(), optionsDirective(), and translate().

◆ fuzz

size_t RexxSource::fuzz
protected

Definition at line 493 of file SourceFile.hpp.

Referenced by getFuzz(), optionsDirective(), and translate().

◆ guard_variables

RexxIdentityTable* RexxSource::guard_variables
protected

◆ holdstack

RexxStack* RexxSource::holdstack
protected

Definition at line 507 of file SourceFile.hpp.

Referenced by cleanup(), globalSetup(), holdObject(), live(), and liveGeneral().

◆ initCode

RexxCode* RexxSource::initCode
protected

Definition at line 472 of file SourceFile.hpp.

Referenced by live(), liveGeneral(), and translate().

◆ installed_classes

RexxDirectory* RexxSource::installed_classes
protected

◆ installed_public_classes

RexxDirectory* RexxSource::installed_public_classes
protected

◆ interpret_activation

RexxActivation* RexxSource::interpret_activation
protected

Definition at line 470 of file SourceFile.hpp.

Referenced by flatten(), interpretMethod(), live(), and liveGeneral().

◆ isBlock

bool RexxSource::isBlock
protected

Definition at line 477 of file SourceFile.hpp.

Referenced by getIsBlock(), RexxActivation::RexxActivation(), and setIsBlock().

◆ keywordInstructions

KeywordEntry RexxSource::keywordInstructions
staticprotected

Definition at line 538 of file SourceFile.hpp.

Referenced by keyword().

◆ labels

RexxDirectory* RexxSource::labels
protected

Definition at line 526 of file SourceFile.hpp.

Referenced by addLabel(), cleanup(), findLabel(), live(), liveGeneral(), and translateBlock().

◆ last

RexxInstruction* RexxSource::last
protected

◆ libraries

RexxList* RexxSource::libraries
protected

◆ line_adjust

size_t RexxSource::line_adjust
protected

Definition at line 469 of file SourceFile.hpp.

Referenced by adjustLine(), extractSource(), and position().

◆ line_count

size_t RexxSource::line_count
protected

◆ line_number

size_t RexxSource::line_number
protected

◆ line_offset

sizeB_t RexxSource::line_offset
protected

◆ literals

RexxDirectory* RexxSource::literals
protected

Definition at line 508 of file SourceFile.hpp.

Referenced by addText(), cleanup(), globalSetup(), live(), and liveGeneral().

◆ loadedPackages

RexxList* RexxSource::loadedPackages
protected

Definition at line 474 of file SourceFile.hpp.

Referenced by addPackage(), getPackages(), live(), and liveGeneral().

◆ maxstack

size_t RexxSource::maxstack
protected

Definition at line 531 of file SourceFile.hpp.

Referenced by pushSubTerm(), pushTerm(), and translateBlock().

◆ merged_public_classes

RexxDirectory* RexxSource::merged_public_classes
protected

Definition at line 487 of file SourceFile.hpp.

Referenced by findPublicClass(), getImportedClasses(), live(), liveGeneral(), and mergeRequired().

◆ merged_public_routines

RexxDirectory* RexxSource::merged_public_routines
protected

◆ methods

RexxDirectory* RexxSource::methods
protected

◆ namedSubTerms

RexxQueue* RexxSource::namedSubTerms
protected

◆ operators

RexxQueue* RexxSource::operators
protected

◆ package

PackageClass* RexxSource::package
protected

Definition at line 475 of file SourceFile.hpp.

Referenced by addText(), getPackage(), live(), and liveGeneral().

◆ parentSource

◆ parseOptions

KeywordEntry RexxSource::parseOptions
staticprotected
Initial value:
= {
KeywordEntry(CHAR_CASELESS, SUBKEY_CASELESS),
KeywordEntry(CHAR_LINEIN, SUBKEY_LINEIN),
KeywordEntry(CHAR_LOWER, SUBKEY_LOWER),
KeywordEntry(CHAR_SOURCE, SUBKEY_SOURCE),
KeywordEntry(CHAR_UPPER, SUBKEY_UPPER),
KeywordEntry(CHAR_VALUE, SUBKEY_VALUE),
KeywordEntry(CHAR_VERSION, SUBKEY_VERSION),
}
#define SUBKEY_VAR
Definition: Token.hpp:233
#define SUBKEY_LOWER
Definition: Token.hpp:217
#define SUBKEY_VERSION
Definition: Token.hpp:234
#define SUBKEY_SOURCE
Definition: Token.hpp:227
#define SUBKEY_LINEIN
Definition: Token.hpp:216
#define SUBKEY_UPPER
Definition: Token.hpp:231
#define SUBKEY_ARG
Definition: Token.hpp:205
#define SUBKEY_PULL
Definition: Token.hpp:225
#define SUBKEY_VALUE
Definition: Token.hpp:232
#define SUBKEY_CASELESS
Definition: Token.hpp:218

Definition at line 542 of file SourceFile.hpp.

Referenced by parseOption().

◆ programDirectory

RexxString* RexxSource::programDirectory
protected

◆ programExtension

RexxString* RexxSource::programExtension
protected

◆ programFile

RexxString* RexxSource::programFile
protected

Definition at line 457 of file SourceFile.hpp.

Referenced by extractNameInformation(), getProgramFile(), live(), and liveGeneral().

◆ programName

◆ public_routines

◆ requires

RexxList* RexxSource::requires
protected

◆ reserved1

intptr_t RexxSource::reserved1
protected

Definition at line 499 of file SourceFile.hpp.

◆ reserved2

intptr_t RexxSource::reserved2
protected

Definition at line 500 of file SourceFile.hpp.

◆ reserved3

intptr_t RexxSource::reserved3
protected

Definition at line 501 of file SourceFile.hpp.

◆ reserved4

intptr_t RexxSource::reserved4
protected

Definition at line 502 of file SourceFile.hpp.

◆ routines

◆ savelist

RexxIdentityTable* RexxSource::savelist
protected

Definition at line 506 of file SourceFile.hpp.

Referenced by cleanup(), globalSetup(), live(), liveGeneral(), removeObj(), saveObject(), and toss().

◆ securityManager

SecurityManager* RexxSource::securityManager
protected

◆ sourceArray

RexxArray* RexxSource::sourceArray
protected

◆ sourceBuffer

RexxBuffer* RexxSource::sourceBuffer
protected

◆ sourceIndices

RexxBuffer* RexxSource::sourceIndices
protected

Definition at line 464 of file SourceFile.hpp.

Referenced by flatten(), get(), initBuffered(), live(), liveGeneral(), and position().

◆ sourceLiterals

RexxList* RexxSource::sourceLiterals
protected

Definition at line 509 of file SourceFile.hpp.

Referenced by addText(), cleanup(), globalSetup(), live(), and liveGeneral().

◆ strings

RexxDirectory* RexxSource::strings
protected

Definition at line 510 of file SourceFile.hpp.

Referenced by cleanup(), commonString(), globalSetup(), live(), and liveGeneral().

◆ subDirectives

KeywordEntry RexxSource::subDirectives
staticprotected
Initial value:
= {
}
#define SUBDIRECTIVE_NOCOMMANDS
Definition: Token.hpp:298
#define SUBDIRECTIVE_EXTERNAL
Definition: Token.hpp:282
#define SUBDIRECTIVE_LIBRARY
Definition: Token.hpp:292
#define SUBDIRECTIVE_MIXINCLASS
Definition: Token.hpp:285
#define SUBDIRECTIVE_FORM
Definition: Token.hpp:294
#define SUBDIRECTIVE_COMMANDS
Definition: Token.hpp:297
#define SUBDIRECTIVE_MACROSPACE
Definition: Token.hpp:299
#define SUBDIRECTIVE_SET
Definition: Token.hpp:291
#define SUBDIRECTIVE_GUARDED
Definition: Token.hpp:280
#define SUBDIRECTIVE_UNGUARDED
Definition: Token.hpp:284
#define SUBDIRECTIVE_INHERIT
Definition: Token.hpp:278
#define SUBDIRECTIVE_SUBCLASS
Definition: Token.hpp:283
#define SUBDIRECTIVE_ATTRIBUTE
Definition: Token.hpp:286
#define SUBDIRECTIVE_UNPROTECTED
Definition: Token.hpp:289
#define SUBDIRECTIVE_TRACE
Definition: Token.hpp:296
#define SUBDIRECTIVE_FUZZ
Definition: Token.hpp:295
#define SUBDIRECTIVE_DIGITS
Definition: Token.hpp:293
#define SUBDIRECTIVE_NOMACROSPACE
Definition: Token.hpp:300
#define SUBDIRECTIVE_GET
Definition: Token.hpp:290
#define SUBDIRECTIVE_ABSTRACT
Definition: Token.hpp:288
#define SUBDIRECTIVE_CLASS
Definition: Token.hpp:281
#define SUBDIRECTIVE_PRIVATE
Definition: Token.hpp:279
#define SUBDIRECTIVE_PUBLIC
Definition: Token.hpp:276
#define SUBDIRECTIVE_METACLASS
Definition: Token.hpp:277
#define SUBDIRECTIVE_PROTECTED
Definition: Token.hpp:287

Definition at line 543 of file SourceFile.hpp.

Referenced by subDirective().

◆ subKeywords

KeywordEntry RexxSource::subKeywords
staticprotected

Definition at line 539 of file SourceFile.hpp.

Referenced by subKeyword().

◆ subTerms

◆ terms

RexxQueue* RexxSource::terms
protected

◆ TRACE_ALL

const size_t RexxSource::TRACE_ALL = 'A'
static

Definition at line 422 of file SourceFile.hpp.

Referenced by parseTraceSetting(), and RexxActivation::processTraceSetting().

◆ TRACE_COMMANDS

const size_t RexxSource::TRACE_COMMANDS = 'C'
static

Definition at line 423 of file SourceFile.hpp.

Referenced by parseTraceSetting(), and RexxActivation::processTraceSetting().

◆ TRACE_DEBUG_MASK

const size_t RexxSource::TRACE_DEBUG_MASK = 0xff00
static

Definition at line 449 of file SourceFile.hpp.

◆ TRACE_ERRORS

const size_t RexxSource::TRACE_ERRORS = 'E'
static

Definition at line 427 of file SourceFile.hpp.

Referenced by parseTraceSetting(), and RexxActivation::processTraceSetting().

◆ TRACE_FAILURES

const size_t RexxSource::TRACE_FAILURES = 'F'
static

Definition at line 426 of file SourceFile.hpp.

Referenced by parseTraceSetting(), and RexxActivation::processTraceSetting().

◆ TRACE_IGNORE

const size_t RexxSource::TRACE_IGNORE = '0'
static

Definition at line 431 of file SourceFile.hpp.

Referenced by parseTraceSetting(), and RexxActivation::processTraceSetting().

◆ TRACE_INTERMEDIATES

const size_t RexxSource::TRACE_INTERMEDIATES = 'I'
static

Definition at line 429 of file SourceFile.hpp.

Referenced by parseTraceSetting(), and RexxActivation::processTraceSetting().

◆ TRACE_LABELS

const size_t RexxSource::TRACE_LABELS = 'L'
static

Definition at line 424 of file SourceFile.hpp.

Referenced by parseTraceSetting(), and RexxActivation::processTraceSetting().

◆ TRACE_NORMAL

const size_t RexxSource::TRACE_NORMAL = 'N'
static

◆ TRACE_OFF

const size_t RexxSource::TRACE_OFF = 'O'
static

Definition at line 430 of file SourceFile.hpp.

Referenced by parseTraceSetting(), and RexxActivation::processTraceSetting().

◆ TRACE_RESULTS

const size_t RexxSource::TRACE_RESULTS = 'R'
static

Definition at line 428 of file SourceFile.hpp.

Referenced by parseTraceSetting(), and RexxActivation::processTraceSetting().

◆ TRACE_SETTING_MASK

const size_t RexxSource::TRACE_SETTING_MASK = 0xff
static

Definition at line 436 of file SourceFile.hpp.

Referenced by formatTraceSetting(), and RexxActivation::processTraceSetting().

◆ traceFlags

size_t RexxSource::traceFlags
protected

Definition at line 496 of file SourceFile.hpp.

Referenced by getTraceFlags(), optionsDirective(), and translate().

◆ traceSetting

size_t RexxSource::traceSetting
protected

Definition at line 495 of file SourceFile.hpp.

Referenced by getTrace(), getTraceSetting(), optionsDirective(), and translate().

◆ variableindex

size_t RexxSource::variableindex
protected

Definition at line 532 of file SourceFile.hpp.

Referenced by addStem(), addVariable(), and translateBlock().

◆ variables

RexxDirectory* RexxSource::variables
protected

Definition at line 525 of file SourceFile.hpp.

Referenced by addStem(), addText(), addVariable(), cleanup(), live(), liveGeneral(), and translateBlock().


The documentation for this class was generated from the following files: