Class VirtualSpecification
java.lang.Object
simula.compiler.syntaxClass.SyntaxClass
simula.compiler.syntaxClass.declaration.Declaration
simula.compiler.syntaxClass.declaration.VirtualSpecification
Virtual Quantities.
Simula Standard: 5.5.3 Virtual quantities virtual-part = VIRTUAL : virtual-spec ; { virtual-spec ; } virtual-spec = virtual-specifier identifier-list | PROCEDURE procedure-identifier procedure-specification procedure-specification = IS procedure-declaration virtual-specifier = LABEL | SWITCH | [ type ] PROCEDURE identifier-list = identifier { , identifier }
Link to GitHub: Source File.
- Author:
- SIMULA Standards Group, Øystein Myhre Andersen
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescription(package private) boolean
Indicates if this virtual has a default match.int
Virtual kind.int
The prefix level of the class with this virtual specification.The procedure specification if present.Fields inherited from class Declaration
declarationKind, declaredIn, externalIdent, identifier, isProtected, type
Fields inherited from class SyntaxClass
CHECKED, lineNumber, OBJECT_SEQU
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
Default constructor used by Attribute File I/O(package private)
VirtualSpecification
(String identifier, Type type, int kind, int prefixLevel, ProcedureSpecification procedureSpec) VirtualSpecification. -
Method Summary
Modifier and TypeMethodDescriptionvoid
buildCallMethod
(ClassDesc owner, CodeBuilder codeBuilder) Build call virtual method.void
buildMethod
(ClassBuilder classBuilder) Build the default virtual match method RTS_LABEL or RTS_PRCQNT.void
Perform semantic checking.void
Output Java code.private static void
expectIdentifierList
(ClassDeclaration cls, Type type, int kind) Parse a virtual identifier list.(package private) static void
Parse a virtual-part and put it into the given class.Returns the virtual identifier used in JVM code.Returns the virtual identifier used i Java code.static VirtualSpecification
Get virtual specification.void
Utility print syntax tree method.static SyntaxClass
Read and return an object.toString()
void
Write a SyntaxClass object to a AttributeOutputStream.Methods inherited from class Declaration
acceptDeclaration, buildDeclaration, buildDeclarationCode, buildInitAttribute, checkAlreadyDefined, getFieldIdentifier, getJavaIdentifier, isCompatibleClasses, verifyTree
Methods inherited from class SyntaxClass
ASSERT_SEMANTICS_CHECKED, buildByteCode, doDeclarationCoding, edIndent, edTreeIndent, IS_SEMANTICS_CHECKED, print, SET_SEMANTICS_CHECKED, setLineNumber, toJavaCode
-
Field Details
-
kind
public int kindVirtual kind. -
prefixLevel
public int prefixLevelThe prefix level of the class with this virtual specification. -
procedureSpec
The procedure specification if present. -
hasDefaultMatch
boolean hasDefaultMatchIndicates if this virtual has a default match.
Set during doChecking.
-
-
Constructor Details
-
VirtualSpecification
VirtualSpecification(String identifier, Type type, int kind, int prefixLevel, ProcedureSpecification procedureSpec) VirtualSpecification.- Parameters:
identifier
- virtual identifiertype
- the virtual's typekind
- the vitual KindprefixLevel
- the prefix level of the class with this virtual specificationprocedureSpec
- the ProcedureSpecification or null if not present
-
VirtualSpecification
private VirtualSpecification()Default constructor used by Attribute File I/O
-
-
Method Details
-
expectVirtualPart
Parse a virtual-part and put it into the given class.
Syntax: virtual-part = VIRTUAL: virtual-spec ; { virtual-spec ; } virtual-spec = virtual-specifier identifier-list | PROCEDURE procedure-identifier procedure-specification virtual-Specifier = [ type ] PROCEDURE | LABEL | SWITCH identifier-list = identifier { , identifier } procedure-specification = IS procedure-declaration
Precondition: VIRTUAL is already read.
- Parameters:
cls
- the ClassDeclaration
-
expectIdentifierList
Parse a virtual identifier list.
Syntax: identifier-list = identifier { , identifier
- Parameters:
cls
- the ClassDeclarationtype
- the specifiers typekind
- the specifiers kind
-
doChecking
public void doChecking()Description copied from class:SyntaxClass
Perform semantic checking.
This must be redefined in every subclass.
- Overrides:
doChecking
in classSyntaxClass
-
getVirtualIdentifier
Returns the virtual identifier used i Java code.- Returns:
- the virtual identifier used i Java code
-
getSimpleVirtualIdentifier
Returns the virtual identifier used in JVM code.- Returns:
- the virtual identifier used in JVM code
-
getVirtualSpecification
Get virtual specification.- Parameters:
decl
- the declaration to search for- Returns:
- a VirtualSpecification or null
-
doJavaCoding
public void doJavaCoding()Description copied from class:SyntaxClass
Output Java code.- Overrides:
doJavaCoding
in classSyntaxClass
-
buildMethod
Build the default virtual match method RTS_LABEL or RTS_PRCQNT.- Parameters:
classBuilder
- the classBuilder to use.
-
buildCallMethod
Build call virtual method.- Parameters:
owner
- the class owning the virtual.codeBuilder
- the codeBuilder to use.
-
printTree
Description copied from class:SyntaxClass
Utility print syntax tree method.- Overrides:
printTree
in classSyntaxClass
- Parameters:
indent
- number of spaces leading the lineshead
- the head of the tree.
-
toString
-
writeObject
Description copied from class:SyntaxClass
Write a SyntaxClass object to a AttributeOutputStream.- Overrides:
writeObject
in classSyntaxClass
- Parameters:
oupt
- the AttributeOutputStream to write to.- Throws:
IOException
- if something went wrong.
-
readObject
Read and return an object.- Parameters:
inpt
- the AttributeInputStream to read from- Returns:
- the object read from the stream.
- Throws:
IOException
- if something went wrong.
-